在请求之间授权属性

时间:2014-04-08 13:01:31

标签: security asp.net-web-api authorization

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

授权属性的一些好处

  • 允许轻松添加特定方法或整个控制器的授权
  • 您可以在单个操作
  • 上指定多个授权属性
  • 您可以使用[AllowAnonymousAttribute]禁用操作授权
  • 允许您对角色声明或用户声明进行授权
  • 提供有价值的覆盖以确定授权