Я нахожусь в такой ситуации, когда меня действительно смущает вопрос о том, как работать с безопасностью в моем приложении ASP .NET MVC. Вот что я знаю, я хочу сделать:
1) Мне нужен собственный макет схемы, чтобы я мог реализовать безопасность так, как я хочу, и не быть привязанным к схеме БД по умолчанию от Microsoft (которую я видел рядом с отсутствием поддержки других БД).
2) Это будет звучать как противоречие, но я хочу использовать Entity Framework и, да, MS Sql Server 2005. То, что я делаю это, не означает, что я хочу быть вовлеченным в эти решения. Я видел, что ряд других поставщиков dbms предоставляют поддержку EF, так что это выглядит намного лучше.
Базовая настройка безопасности довольно проста. Есть пользователи. У пользователей есть роли. У меня есть 3 основные таблицы из этого: User, Role, UserRoles.
Итак, если бы это было профессиональное веб-приложение, на создание которого я заключил контракт, что было бы хорошим способом сделать это? Создание пользовательской реализации провайдера членства кажется наиболее тщательным, и кажется, что это довольно переносимое решение. Я видел несколько статей, в которых говорилось только о создании ActionFilter или CustomAttribute. Может быть, это одно и то же; как я уже сказал, я очень запутался.
Суть в том, что я пытаюсь намочить эту технологию, но я хочу предвидеть, как это будет сделано в реальном мире. Я рассмотрел пример посетителя, который использует настройки поставщика членства по умолчанию (включая схему), что здесь не так.
Я гуглил это. Я прочитал десятки статей и нашел очень много реализаций. Я прошел через ASP .NET Unleashed, в которой есть только стандартное объяснение поставщика членства. Я на самом деле просто пытаюсь найти здесь какой-нибудь солидный профессиональный совет от тех из вас, кто работал в промышленности и делал это какое-то время.
Спасибо за ваше время.
Обновление.
Мне удалось освободить файл CSS от аутентификации. Я добавил следующее в web.config (уровень приложения).
<location path="Content">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="~/Views/Account">
<system.web>
<authorization >
<allow users="*" />
</authorization>
</system.web>
</location>
Теперь возникла логическая проблема. Ранее я указывал приложению в файле web.config, что URL-адрес входа: LogOn.aspx. С тех пор как я реализовал пользовательское членство и провайдера, я решил пойти со стандартной страницей входа в аккаунт. На странице вы можете зарегистрироваться для новой учетной записи; однако, щелкнув гиперссылку «Регистрация», вы останетесь на странице входа в систему. Очевидно, что новые пользователи не будут очень рады этому. Я попытался сделать так, чтобы все страницы в папке Views / Account не проходили проверку подлинности с помощью XML выше, но, похоже, это не сработало. Мысли?
**************************************** ОБНОВЛЕНО СНОВА ***** ***********************************
Видимо, тегу Location просто нужно имя каталога, а не дерево каталогов. По крайней мере, мне кажется, это так. Я изменил 2-й тег местоположения, чтобы он выглядел так:
<location path="Account">
<system.web>
<authorization >
<allow users="*" />
</authorization>
</system.web>
</location>
И теперь я могу получить доступ ко всем файлам в папке представлений учетной записи, а также ко всем действиям контроллера учетной записи. Здесь есть интересная ирония: я пошел и создал собственную реализацию провайдера членства (что я очень рад, что сделал), поэтому я могу использовать ванильные страницы Register & LogOn, которые поставляются с ASP .NET MVC. Я полагаю, если это не сломано, не чините это. Так скажите мне ... насколько комфортно было бы помещать эти страницы в рабочую среду с минимальными изменениями? Просто любопытно. Я нахожусь в точке, где я просто пытаюсь понять, КАК делать эти вещи; Я не могу реально оценить, хорошо ли делать или использовать X, или еще не совсем.