2010-03-04 3 views
2

Мне нужно создать систему, которая будет контролировать доступ к определенной информации. Требование от пользователя заключается в использовании уровней доступа, например.Использование ролей ASP.NET для представления разных уровней доступа

Level 1 - Support 
Level 2 - Manager 
Level 3 - Senior Manager 
Level 4 - Department Head 
etc. 

Если определенный фрагмент информации отмечен как Уровень 1, то все роли должны иметь возможность просматривать эту информацию. Если он отмечен как уровень 3, то только старший менеджер и начальник отдела могут его просмотреть, но роли менеджера и поддержки не могут его просмотреть.

Вопросы

  • Когда я назначить уровень доступа к части информации, мне придется назначить несколько ролей к нему для того, чтобы мне достичь этой функциональности?
  • Есть ли лучший способ сделать это?

ответ

1

Сопоставьте свои роли с глобальным enum таким образом, чтобы порядок перечисления представлял собой приоритет доступа, например:

public enum SecurityGroup 
{ 
    Support, Manager, SeniorManager, DepartmentHead 
} 

Очевидно, что эти роли должны соответствовать ролям поставщика. Вы бы затем использовать Enum.Parse бросить значение из GetRolesForUser так:

var currentUserSecurityGroup = (SecurityGroup)Enum.Parse(typeof(SecurityGroup), Roles.GetRolesForUser(username)); 

Теперь вы можете проверить относительную позицию против вашей группы:

if (currentUserSecurityGroup <= SecurityGroup.SeniorManager) 
    // do stuff 
1

Вам необходимо внедрить аутентификацию формы и добавить свои роли/уровень в web.config, какую роль может получить страница.

<location path="yourPage.aspx"> 
    <system.web> 
      <authorization> 
       <deny users="?"/> 
       <allow roles="Manager"/> 
       <deny users="Department Head"/> 
      </authorization> 
    </system.web> 

Для получения дополнительной информации плз проверить эти адреса http://msdn.microsoft.com/en-us/library/aa480476.aspx http://devhood.com/tutorials/tutorial_details.aspx?tutorial_id=85

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

if (System.Web.HttpContext.Current.User.IsInRole("Support")) 
     { 
      pnl.Visible = false;//try to put your user specific details in panel to hide/show 
     } 
Смежные вопросы