Хорошо, я только что создал новое веб-приложение, которое использует стандартный менеджер ролей.Я создал три роли: roleA, roleB, roleC.и в моем приложении я добавил ту же конфигурационную запись, которую вы использовали выше, но изменил путь к странице «About.aspx» по умолчанию.
После тестирования различных конфигураций ролей роли, похоже, работают точно так, как и следовало ожидать,Если пользователь является членом нескольких ролей, например roleA и roleC, если вы настроили конфигурацию так, как вы это сделали, разрешите «roleA, roleB», чтобы мой пользователь получил доступ независимо от порядка.Убери роль A в конфиге, и у моего пользователя больше нет доступа.Уберите roleB и прочитайте roleA, мой пользователь снова имеет доступ, прочитал их обоих, у пользователя есть доступ.
Редактировать 2 - Удаление изображения с помощью «RoleGroup», как я полагаю, это приводит к смущению.
http://www.asp.net/security/tutorials/role-based-authorization-cs.
Имеет довольно хорошее объяснение того, как работает аутентификация на основе ролей.Нет большой информации о нескольких ролях, хотя.
Также в качестве примечания вы можете программно проверять роли, которые немного сложнее поддерживать, но затем вы можете обрабатывать авторизацию так, как вам нравится, я лично делал это в прошломпроекты для ограничения доступа к различным страницам для пользователей, и это сработало довольно хорошо для меня.
http://www.4guysfromrolla.com/articles/082703-1.2.aspx
Редактировать - Добавление информации о моем тесте.
Для дальнейшегообъясните, как я тестирую:
Я создал базового пользователя и 3 роли в инструменте веб-администрирования.Создано 3 роли.И назначил роль A и роль C моему пользователю.
Отсюда мой конфигурационный файл.Это веб-конфигурация по умолчанию для нового проекта с добавленными выше настройками.
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="true">
<providers>
<clear />
<add connectionStringName="ApplicationServices" applicationName="/"
name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<location path="About.aspx">
<system.web>
<authorization>
<allow roles="roleA, roleB" />
<deny users="*" />
</authorization>
</system.web>
</location>