Web Api 2,声明在我的继承Apicontroller中始终为null

时间:2013-12-26 07:41:19

标签: api web oauth asp.net-web-api2

我在项目中使用Web Api 2 Auth模板。我希望在客户端请求Api Key时获取用户ID。我的问题是:

1如何获取api客户端用户的ID。

- 通过Api请求解决它是对还是错?

- 或者直接在http标头中取用userId吗?

- 或使用Api密钥从数据库查询?

2我创建了从ApiController继承的MyApiController,我想在其中获取声明。所以我在其中写了一些代码。就像这样

protected override void Initialize(HttpControllerContext controllerContext)
   { 
    base.Initialize(controllerContext);
    var principal = Request.GetRequestContext().Principal as ClaimsPrincipal;
    CorpId = (from c in principal.Claims where c.Type.Contains("CorpId") select c.Value).FirstOrDefault();
    UserId = (from c in principal.Claims where c.Type.Contains("UserId") select c.Value).FirstOrDefault();
   }

我在MyApiController中发现声明为null。但是当我在动作控制器中执行它时,它有效吗?

1 个答案:

答案 0 :(得分:0)

当执行请求时(即在Controller.Get方法中),而不是在创建控制器时,您更愿意获取请求特定数据。如果控制器方法中不需要值,则使用过滤器属性。