Помните, что есть две разные части в структуре аутентификации / авторизации ASP.NET.Первый - это интерфейс с поставщиками членства и ролей, а затем есть сервер, использующий SqlMembershipProvider и SqlRoleProvider .
. По моему личному опыту,Мне было проще всего написать свои собственные версии MembershipProvider и RoleProvider.Я думаю, что это удовлетворит все ваши требования.
Обновление : Джаред спросил меня: «Кажется, реализация MembershipProvider и RoleProvider добавляет много накладных расходов (и пух), которые мне никогда не понадобятся/ Использовать. Это все еще путь? Что я выиграю от этого? "
Я думаю, что если вы используете платформу аутентификации / авторизации, вы можете воспользоваться множеством встроенных вещей.Например вы можете украсить контроллеры их методами авторизации на основе таких ролей, как [Authorize(Roles = "DefaultUser")]
.Также вы можете поместить этот вид проверочного кода непосредственно в представления, если это необходимо, например:
<% if (Request.IsAuthenticated) { %>
<p>Only authenticated users see this.</p>
<% } %>
Кроме того, Аутентификация / Авторизация заботится о грязной работе по настройке ролевых / пользовательских файлов cookie и их шифрованию.Если вы катите свою собственную, то это то, что вы должны сделать сами.
Джаред также хочет: «Пользователь может быть частью одной или нескольких ролей».и «Роли могут быть сопоставлены с любым количеством« разрешений »(многие-ко-многим). Разрешение - это что-то вроде« Может редактировать сообщения других пользователей ».
Я считаю роли и разрешения тем же.Таким образом, один пользователь может иметь несколько ролей и разрешений, например «CanEditPosts», «Admin» и т. Д.