代码之家  ›  专栏  ›  技术社区  ›  Richard Nienaber

使用ASP.NET角色表示不同的访问级别

  •  2
  • Richard Nienaber  · 技术社区  · 15 年前

    我需要设计一个系统来控制对某些信息的访问。用户的要求是使用访问级别,例如。

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

    如果某一信息被标记为级别1,那么所有角色都应该能够查看该信息。如果标记为3级,则只有高级经理和部门主管可以查看,但经理和支持角色不能查看。

    问题

    • 有更好的方法吗?
    2 回复  |  直到 15 年前
        1
  •  1
  •   Thomas    15 年前

    将角色映射到全局枚举,以便枚举的顺序表示访问的优先级,例如:

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

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

    现在,您可以对照组检查相对位置:

    if ( currentUserSecurityGroup <= SecurityGroup.SeniorManager )
       // do stuff
    
        2
  •  1
  •   Muhammad Akhtar    15 年前

    您需要使用实现表单身份验证,并在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
            }
    
    推荐文章