WebApiController和HttpContext.Current.User中的User是不同的?

时间:2012-12-19 16:45:53

标签: asp.net-mvc authentication asp.net-web-api basic-authentication iprincipal

在引用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控制器中访问它的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

不 - 你不得不设置两个。

Thread.CurrentPrincipal和HttpContext.User

答案 1 :(得分:1)

在ASP.NET Web API应用程序中,您不应该依赖当前的HttpContext。至于你的问题的答案,将主体设置为Thread.CurrentPrincipal就是你想要的:

Thread.CurrentPrincipal = new GenericPrincipal(new ApiIdentity(apiUser), new string[] {});