Как я программно перечисляю, какая Роль ASP.NET может получить доступ к странице?

Существует ли способ перечислить, какие роли имеют доступ к данной странице с помощью кода?

Пример, у меня есть Testpage.aspx, и я хотел перечислить роли, допускал эту страницу, когда пользователь получает доступ к странице. URLAuthorizationManager должен смочь узнать это так или иначе, таким образом, должен быть способ, которым он знает, какие роли настроены в webconfig для страницы. или URL.

Вот webconfig, ограничение ролей позволило просматривать эту страницу.

<location path="Testpage.aspx">
    <system.web>
      <authorization>
        <allow roles ="admin,sales" />
      </authorization>
    </system.web>
  </location>

Если бы я мог бы найти решение, оно возвратило бы "администратора", "продажи". Кто-либо знает, как я могу сделать это?Спасибо

6
задан Chris 6 August 2010 в 18:45
поделиться

2 ответа

Вы можете использовать следующий код на странице, где вы хотите получить информацию.

var section = (AuthorizationSection)
    WebConfigurationManager.GetSection("system.web/authorization");
var rules = section.Rules;
var allowedRoles = rules
    .OfType<AuthorizationRule>()
    .Where(r => r.Action == AuthorizationRuleAction.Allow)
    .Select(r => r.Roles).First();

Причина вызова First() заключается в том, что конфигурация .NET является иерархической. Предположим, у вас есть следующая иерархия и конфигурация веб-сайта:

/Default.aspx
/Web.config        (<allow roles="admin,user" />)
/SubDir/
       /Test.aspx
       /Web.config (<allow roles="admin,other" />)

, и вы вызываете приведенный выше код из Test.aspx.cs, затем свойства AuthorizationSection.Rules содержит три элемента, соответствующих соответственно конфигурации из /SubDir/Web.config, Web.config и machine.config. Таким образом, первый элемент содержит роли admin и other.

10
ответ дан 9 December 2019 в 20:38
поделиться

Используйте метод Roles.GetAllRoles()

http://msdn.microsoft.com/en-us/library/system.web.security.roles.getallroles.aspx

и вот пример, где они перечисляют все роли: http://weblogs.asp.net/scottgu/archive/2005/10/18/427754.aspx

-1
ответ дан 9 December 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: