代码之家  ›  专栏  ›  技术社区  ›  Nate CSS Guy

NET MVC设计问题将特定用户/访问级别代码放在何处

  •  4
  • Nate CSS Guy  · 技术社区  · 15 年前

    我已经用[Authorize]属性修饰了我的控制器操作,这也是我想要的工作方式。

    我的问题是,我应该把决定一个用户“有多少”访问权限的代码放在哪里?

    更新

    经过进一步的研究,如果我实现自己的RoleProvider,看起来我可能一举两得——我知道如何限制控制器上的数据访问 [Authorize(Roles = "Admin)] ,它看起来是我最好的选择。如何使用此选项根据角色呈现不同的视图?我是否会创建单独的视图并从控制器返回正确的视图?或者使用内嵌的C#创建一个视图?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Jacobs Data Solutions    15 年前

    问题的第一部分:保持控制器精简,并将访问级别代码放入存储库类/模型中。问题的第二部分:可以为每个访问级别创建不同的视图。或者,您可以将逻辑放在视图本身中,以检查用户的访问级别,但这是相当粗糙且不安全的。我只希望视图不呈现任何从模型返回null/空的字段。

        2
  •  0
  •   Gregoire    15 年前

    您可以创建自己的AuthorizeAttribute,该属性接受在参数中执行此操作所需的UserRole。

    [CustomAuthorize(UserRole.Administrator)]
    public ActionResult YourAction()
    {
    }