This page描述了如何使用 [Authorize]
属性来限制对经过身份验证或授权用户的控制器和操作的访问 .
通过设置 Thread.CurrentPrincipal
来完成身份验证,然后允许访问受限制的控制器/操作,前提是用户具有任何所需的角色 .
当遵循这个方法时,是否需要为每个请求设置 Thread.CurrentPrincipal
(例如在消息处理程序中),或者Web API是否有某种方法在请求之间维护该主体? (据我所知,Web API是无状态的,没有会话,但我只是在检查 . )
此外,如果在会话之间没有维护当前主体, [Authorize]
属性在编写自己的自定义访问控制方案方面有什么优势?
1 回答
您是正确的,因为服务器是无状态的,所以需要为消息处理程序中的每个请求设置
Thread.CurrentPrincipal
.authorize属性的一些好处
允许轻松添加特定方法或整个控制器的授权
您可以在单个操作上指定多个授权属性
您可以使用
[AllowAnonymousAttribute]
禁用操作的授权允许您对角色声明或用户声明进行授权
提供有 Value 的覆盖以确定授权