如何从我自己的授权类访问当前请求?

时间:2014-04-28 17:20:27

标签: c# asp.net asp.net-web-api asp.net-web-api2

我需要从我自己的授权类访问Request对象。 Controller属性可能不是一个选项,这就是原因。

  • 有用户
  • 有对象
  • 用户可以拥有对象的特定权限(读/写/删除/...)
  • 对象可以公开(也可以读/写)

由于这个系统,我需要编写自己的授权逻辑,这不是问题,我想的是这样的事情:

伪代码

public class ObjectsController : ApiController
{
    private readonly AuthorizationService _auth = new AuthorizationService();

    [Route]
    public async Task<IHttpActionResult> Get()
    {
        var obj = new object(); // this is object that we will be working with
        // Note: This is just for demo, real object will be something like `Item`

        if (obj.IsPublic || _auth.CurrentUser.CanRead(obj))
        {
            return Ok(obj);
        }

        return Unauthorized();
    }
}

我将如何检查当前用户

  1. 检查是否有标题Token
  2. 检查是否有url param ?token=
  3. 从令牌获取用户
  4. 返回用户或null
  5. 问题

    现在因为我需要检查天气CAN这个用户读了这个Item(obj)AFAIK我不能使用控制器属性,因为我首先需要从数据库中获取实际项目。我有什么选择?我可以访问当前Request对象以在AuthorizationService类中提取所需的值吗?

1 个答案:

答案 0 :(得分:3)

您可以使用HttpContext.Current.Request

进行访问