以下两种通过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");
}
它们是相同的,您可以通过在方法中包括此行来证明:
Debug.Assert(actionContext.RequestContext.Principal == HttpContext.Current.User);
我个人会使用actionContext
,因为使用HttpContext.Current
会创建一个依赖项,并且使其变得更难,例如单元测试。