【问题标题】:User restrictions on views based on customer user properties基于客户用户属性的用户对视图的限制
【发布时间】:2011-02-24 10:03:33
【问题描述】:

我正在使用 ASP.NET MVC 3。

我想创建一个操作过滤器来确定用户是否可以访问视图。我有一个具有 IsAdministrator、IsTrusteeUser 和 IsAuditUser 等属性的用户类。如果某些用户不属于其中的某些角色,我将如何创建操作过滤器来阻止某些用户?

另外,我将如何在视图中使用它来隐藏/显示某些控件?我会很感激一些代码:)

【问题讨论】:

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


    【解决方案1】:

    为什么要重新发明轮子?

    [Authorize] 动作过滤器放在动作/控制器上,指定所需的角色:

    [Authorize(Roles = "Administrator")]
    public ActionResult SomeAdminPage() { // }
    

    或者你可以通过实现IAuthorizationFilter来实现你自己的自定义授权过滤器。

    【讨论】:

    • 我没有使用任何类型的成员资格,我只是有一个表格说明用户是否是管理员用户、审核用户等。那么您认为我必须创建一个自定义授权过滤器吗?
    • @Brendan - 对,我的错 - 如果您不使用内置的角色提供程序(与会员资格分开,afaik) - 您可能需要自定义授权过滤器。
    • 只是一个简单的问题。我有一张桌子,里面有用户(员工编号),还有我自己的桌子,里面有角色。可以使用角色成员身份吗?我将如何在我当前的系统中实现它?
    • @Brendan Vogt - 这不是一个快速的问题。 :) 本质上,您将创建自己的 SqlMembershipProvider 和 SqlRoleProvider - 并更新您的 web.config 以在其中添加您的提供程序。在 4guysfromrolla - 4guysfromrolla.com/articles/120705-1.aspx 上有一个很好的关于会员/角色/个人资料的系列。但答案是肯定的——它可以使用,很多人以前做过。
    【解决方案2】:
    1. 您可以实现 IActionFilter 接口来编写这样一个用于用户访问权限检查的属性扩展,有关编码的一些信息您可以在 here

    2. 要在 UI 上隐藏/显示某些控件,这不是 ActionFilters 的工作,您应该为每个用户制作单独的视图并相应地重定向他,或者做一些

    如果/否则

    实现这一目标。

    【讨论】:

      猜你喜欢
      • 2019-12-08
      • 1970-01-01
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      相关资源
      最近更新 更多