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

时间:2010-04-07 18:34:52

标签: c# security asp.net-mvc-2

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

我脑子里有几种方式,有些方法比其他方式更多:

1)使用PrincipalPermission属性,该属性在写入的LOC上很简单且非常低。主要的是,它需要代码发布(和测试)才能对安全性进行任何更改。

2)使用似乎与Authorize属性基本相同的PrincipalPermission属性(至少在这种情况下)。

3)使用自定义属性(如所讨论的here)并从web.config文件中读取经典ASP.NET中的配置。这具有灵活性的好处,但我不喜欢在配置中读取所需的代码量。

4)使用自定义属性并从数据库中读取角色信息。与之前的选项类似,但是来自数据库。我更倾向于采用这种方式,因为它为用户提供了最大的灵活性,但它还要求我指定至少一个人来更改权限。使用模拟时可能会造成困难/烦恼,因为将来可能不存在“管理员”。

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

6)我错过了其他的东西......

那么哪个选项最好?这里要记住的是,至少在我的情况下,对代码进行更改需要进行测试,这可能是一个漫长而漫长的过程。能够避免重建代码似乎(对我而言)是一个主要的好处,尽管我认为即使安全性发生变化也能达到目的。

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

1 个答案:

答案 0 :(得分:1)

我选择了授权属性方法:) {3}由tvanfosson描述。