首页 文章

在请求之间授权属性

提问于
浏览
0

This page描述了如何使用 [Authorize] 属性来限制对经过身份验证或授权用户的控制器和操作的访问 .

通过设置 Thread.CurrentPrincipal 来完成身份验证,然后允许访问受限制的控制器/操作,前提是用户具有任何所需的角色 .

当遵循这个方法时,是否需要为每个请求设置 Thread.CurrentPrincipal (例如在消息处理程序中),或者Web API是否有某种方法在请求之间维护该主体? (据我所知,Web API是无状态的,没有会话,但我只是在检查 . )

此外,如果在会话之间没有维护当前主体, [Authorize] 属性在编写自己的自定义访问控制方案方面有什么优势?

1 回答

  • 0

    您是正确的,因为服务器是无状态的,所以需要为消息处理程序中的每个请求设置 Thread.CurrentPrincipal .

    authorize属性的一些好处

    • 允许轻松添加特定方法或整个控制器的授权

    • 您可以在单个操作上指定多个授权属性

    • 您可以使用 [AllowAnonymousAttribute] 禁用操作的授权

    • 允许您对角色声明或用户声明进行授权

    • 提供有 Value 的覆盖以确定授权

相关问题