【问题标题】:Validating user role's page level access验证用户角色的页面级别访问权限
【发布时间】:2013-01-25 20:13:44
【问题描述】:

我的问题和这个差不多 ASP.Net Roles: Page-Level Security Question 除了我没有使用 asp.net 成员身份这一事实之外,我所做的是我创建了角色并将页面分配给角色,菜单也根据用户的角色填充。我想通过简单地键入 PageName.aspx 来限制用户访问页面,一种解决方案可能是检查每个页面加载,但我认为它不是有效的。我用谷歌搜索但只找到添加<location path="Logon.aspx"> 限制的解决方案,我必须为web.config 中的每个页面添加这个,这违背了保持这个东西动态的整个目的,我使用表单身份验证,有些人建议创建一个基类并从该类派生其他页面,我认为可能有一些global.asax 方法来实现这一点,但不知道。请建议我实现这一目标的最佳方法!

P.S : 我 没有使用 ASP.NET Membership

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    传奇,

    这取决于您的项目布局。一种解决方案是您创建一个放置 webconfig 的文件夹结构,并在那里为用户授予权限,我认为这可能是一种解决方案,也可能是其他解决方案。

    【讨论】:

    • 感谢您的帮助,但我不想为要在 web.config 中定义的每个页面添加角色级别访问权限,我保持此角色基页面级别访问权限是动态的。
    • 另一种选择是,当任何人尝试打开页面时,您在表中创建权限,然后检查该用户是否可以查看页面是否存在 true 或 false,然后页面将打开.. 任何问题你可以再讨论
    • 这就是我要问的!我在数据库中有这些信息,但是如何在每个页面加载时调用检查方法?我不建议在每次页面加载时都写这个
    • 我认为您需要在页面初始化时使用它,您首先检查用户及其权限,我认为这只是我认为的一种解决方案。
    【解决方案2】:

    最后,我所做的是使用方法名称IsPageAssignedToRole() 检查 MasterPage 的 Page_Load 上每个用户的 Pages 访问权限来检查

            string requestedPage = Request.Url.Segments[Request.Url.Segments.Length-1];
            if (requestedPage != "UnAuthorized.aspx")
            {
            AdminUserAuthInfo au = (AdminUserAuthInfo)Context.Items["AdminUserAuthInfo"];
            int current_role= int.Parse(au.Roles[0].ToString());
            if (!AdminRole.IsPageAssignedToRole(current_role, requestedPage))
            { Response.Redirect("UnAuthorized.aspx",true); }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 2019-07-29
      • 2012-10-25
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多