在引用this post之后,我写了一个用于在web api中使用的Basic Http Authentication的属性。在属性类中,如果提供的凭据匹配,那么我将HttpContext.Current.User设置为
HttpContext.Current.User = new GenericPrincipal(new ApiIdentity(apiUser), new string[] {});
base.OnActionExecuting(actionContext);
但是,当我在api控制器中访问User时,它没有apiUser属性。
为什么这是设置身份然后在api控制器中访问它的正确方法是什么?
答案 0 :(得分:2)
不 - 你不得不设置两个。
Thread.CurrentPrincipal和HttpContext.User
答案 1 :(得分:1)
在ASP.NET Web API应用程序中,您不应该依赖当前的HttpContext
。至于你的问题的答案,将主体设置为Thread.CurrentPrincipal
就是你想要的:
Thread.CurrentPrincipal = new GenericPrincipal(new ApiIdentity(apiUser), new string[] {});