【问题标题】:How can I access the current request from my own authorization class?如何从我自己的授权类访问当前请求?
【发布时间】:2014-04-28 17:20:26
【问题描述】:

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

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

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

伪代码

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参数?token=
  3. 从令牌中获取用户
  4. 返回用户或为空

问题

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

【问题讨论】:

  • HttpContext.Current.Request.

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


【解决方案1】:

您可以通过HttpContext.Current.Request访问

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 1970-01-01
    • 2018-08-17
    • 2018-05-04
    • 2017-06-09
    • 1970-01-01
    • 2015-02-13
    • 2011-05-17
    • 2016-07-29
    相关资源
    最近更新 更多