我正在将 ASP.NET MVC 添加到现有的 WebForms 应用程序中。目前,我不关心身份验证/登录,因为这部分由现有代码(表单身份验证)处理。
在现有的 WebForms 应用程序中,我们对每个页面都有一个完全自定义的基于权限的授权。所以每个用户都有一组权限,列出了他被允许访问的页面。
现在我需要决定如何使用相同的权限系统来限制对特定 MVC 控制器和操作的访问。
据我了解,对于 ASP.NET MVC,有一个标准的AuthorizeAttribute可以在其中指定角色。我还发现了一些建议指定权限而不是角色的文章 - 然后可以执行以下操作:
[CustomAuthorize(Roles = "View products, Edit products")]
通过扩展 AuthorizeAttribute,我还可以定义我如何存储和访问权限。
这个解决方案对我来说是可以接受的(尽管改变角色的语义有点味道)。
但在承诺之前,我想看看还有哪些其他选择。这就是我卡住的地方——我还没有找到关于 ASP.NET MVC 中授权的不同方法的完整概述。我还想知道所有安全概念(如表单身份验证、成员资格提供程序、授权属性、IPrincipal 等)是如何相互关联的,以及它们应该如何协同工作。