Использование ролей ASP.NET для представления разных уровней доступа - PullRequest
2 голосов
/ 04 марта 2010

Мне нужно спроектировать систему, которая будет контролировать доступ к определенной информации. Требование от пользователя - использовать уровни доступа, например

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

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

Вопросы * * 1006

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

Ответы [ 2 ]

1 голос
/ 04 марта 2010

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

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 голос
/ 04 марта 2010

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

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

Для получения дополнительной информации, пожалуйста, проверьте эти URL 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
        }
...