Web API 2 HttpContext或HttpActionContext

问题描述 投票:7回答:1

以下两种通过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");
}
asp.net-web-api2 owin katana
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.