代码之家  ›  专栏  ›  技术社区  ›  Krisc

MVC2中按角色限制视图的最佳实践

  •  2
  • Krisc  · 技术社区  · 15 年前

    检查用户是否具有运行操作的正确权限的最佳方法是什么?

    我有几个想法,有些我比其他人更喜欢:

    1)使用 PrincipalPermission 属性,该属性简单且在loc上写得很低。主要的缺点是它需要一个代码发布(和测试)来对安全性进行任何更改。

    2)使用 Authorize 属性与 原则许可 属性。

    3)使用自定义属性(如前所述 here )从web.config文件中读取配置。这样做的好处是灵活,但我不喜欢在配置中读取需要生成的代码量。

    4)使用自定义属性并从数据库中读取角色信息。类似于上一个选项,但来自数据库。我更倾向于走这条路线,因为它给了用户最大的灵活性,但它也要求我指定至少一个人来更改权限。当使用模拟时,这可能会变得困难/烦人,因为“管理员”在将来可能不存在。

    5)使用web.config或db方法,而不是在属性级别,在基本控制器类中创建一个允许轻松检查角色的基本方法。这会在每个操作方法中产生额外的代码,而且除了避免 OnActionExecuted 方法(用于捕获目的)。

    那么哪种选择是最好的呢?这里需要记住的是,至少在我的例子中,对代码进行更改需要进行测试,这可能是一个冗长而冗长的过程。在我看来,能够避免重新生成代码是一个很大的好处,尽管我认为即使在安全性发生变化的情况下,这样做也是有目的的。

    (顺便说一句,我看到一个社区wiki按钮和一个关于主观性的警告,但我不确定是否应该检查这个或什么。)

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    8 年前

    我选择了authorize属性方法:) the method 由Tvanfosson描述。