Web Api 2 HttpContext或HttpActionContext

时间:2015-01-30 12:30:17

标签: asp.net-web-api2 owin katana

通过AuthorizeAttribute实施访问原则的以下两种方式之间有什么区别?

使用HttpContext

protected override bool IsAuthorized(HttpActionContext actionContext)
{
    return HttpContext.Current.User.IsInRole("DemoRole");
}

使用HttpActionContext

protected override bool IsAuthorized(HttpActionContext actionContext)
{
    return actionContext.RequestContext.Principal.IsInRole("DemoRole");
}

1 个答案:

答案 0 :(得分:1)

它们是相同的,您可以通过在方法中包括以下行来证明这一点:

Debug.Assert(actionContext.RequestContext.Principal == HttpContext.Current.User);

我个人会使用actionContext,因为使用HttpContext.Current会创建一个依赖项,并且使它变得更难例如单元测试。