参考此帖子后,我写了一个用于Web API中使用的基本HTTP身份验证的属性。在属性类中,如果提供的凭据匹配,则我将httpcontext.current.user设置为
HttpContext.Current.User = new GenericPrincipal(new ApiIdentity(apiUser), new string[] {});
base.OnActionExecuting(actionContext);
但是,当我在API控制器内访问用户时,它没有APIUPER属性。
为什么这是设置身份然后在API控制器中访问它的正确方法?
nope-不幸的是,您必须设置两个。
thread.currentprincipal和httpcontext.user
在您的ASP.NET Web API应用程序中,您不应依靠当前的HttpContext
。至于您的问题的答案,将校长设置为Thread.CurrentPrincipal
是您想要的:
Thread.CurrentPrincipal = new GenericPrincipal(new ApiIdentity(apiUser), new string[] {});