【问题标题】:User permissions on certain views based on roles基于角色的某些视图的用户权限
【发布时间】:2011-02-23 12:56:58
【问题描述】:

我正在使用 ASP.NET MVC 3。请原谅我的术语。我们将角色分配给工作中的某些人,然后我们使用 Windows 身份验证来确定用户具有哪些角色。假设角色是 RoleA、RoleB 和 RoleC。所以现在我得到了一个用户的角色列表。让我们说 UserA 属于 RoleA 和 RoleB。我的某些视图需要经过身份验证,因为不是每个人都可以查看某些视图。假设 ViewA 只能由属于角色 RoleA 和 RoleB 的用户查看。我该怎么做?我需要调查什么?当不属于这些角色的用户尝试访问视图时,他/她应该被重定向到错误页面。

此外,我还需要某种辅助方法来检查这些角色,并在我的视图中使用它来隐藏/显示某些控件。在哪里使用它的最佳位置?

任何示例代码/文章将不胜感激。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-2 asp.net-mvc-3


    【解决方案1】:
    [Authorize(Roles = "RoleA,RoleB")]
    public ActionResult Foo()
    {
        return View();
    }
    

    如果你想在视图中检查角色:

    @if (User.IsInRole("RoleA"))
    {
        <div>This will be visible only to users in RoleA</div>
    }
    

    【讨论】:

    • 如果用户是角色通过视图模型传递不是更好吗?
    • @Darin:如何将角色添加到角色集合中?
    • @Darin:如果用户没有访问权限,我会在哪里指定它必须转到通用错误页面?
    • @Brendan,默认情况下 Authorize 属性将重定向到登录页面。您可以编写一个从默认操作过滤器派生的自定义操作过滤器并重定向到所需的页面。
    • @Darin:我刚刚被告知我们的角色由 IIS 处理。我将如何获取用户的身份以及他/她是否属于角色?请问那里有示例代码吗?您将如何实现此代码以帮助我解决上述情况?
    猜你喜欢
    • 1970-01-01
    • 2020-12-18
    • 2021-04-01
    • 2018-05-29
    • 2023-03-15
    • 2021-09-16
    • 1970-01-01
    • 2023-03-25
    • 2019-12-08
    相关资源
    最近更新 更多