【发布时间】:2012-05-07 16:14:47
【问题描述】:
我正在将 ASP.NET MVC 添加到现有的 WebForms 应用程序中。暂时我不关心身份验证/登录,因为这部分由现有代码处理(表单身份验证)。
在现有的 WebForms 应用程序中,我们对每个页面都有一个完全自定义的基于权限的授权。所以每个用户都有一组权限,列出了他可以访问的页面。
现在我需要决定如何使用相同的权限系统来限制对特定 MVC 控制器和操作的访问。
据我了解,对于 ASP.NET MVC,有一个标准 AuthorizeAttribute 我可以在其中指定角色。我还发现了一些建议指定权限而不是角色的文章 - 然后可以执行以下操作:
[CustomAuthorize(Roles = "View products, Edit products")]
通过扩展 AuthorizeAttribute,我还可以定义我如何存储和访问权限。
这个解决方案对我来说是可以接受的(虽然改变角色的语义有点味道)。
但在承诺之前,我想看看还有哪些其他选择。这就是我卡住的地方——我还没有找到关于 ASP.NET MVC 中授权的不同方法的完整概述。我还想知道所有安全概念(如表单身份验证、成员资格提供程序、授权属性、IPrincipal 等)是如何相互关联的,以及它们应该如何协同工作。
【问题讨论】:
-
这是否与此处尝试的相似:stackoverflow.com/questions/10338734/…
-
@antijon 据我了解,它类似于实现自定义 AuthorizeAttribute。但我想更详细地了解其他选项及其优缺点。
标签: .net asp.net-mvc asp.net-mvc-3 asp.net-membership authorization