我可能在这里丢失了一些明显的东西。我对MVC和Web API都很陌生,所以我正在努力保持头脑清醒。CurrentPrincipal/User在Web API服务中为空
我有一个与Web API服务接口的MVC应用程序。身份验证将由内部开发的登录服务处理。在工作时,MVC客户端应该检查当前用户是否被认证。如果他们不是,那么它将重定向到这个登录服务,这应该认证用户并更新当前用户。然后我需要能够从Web API服务访问这个身份。
我正在假设MVC应用程序中的当前主体(通过Thread.CurrentPrincipal或HTTPContext.Current.User设置)应该在我的Web API服务中可用,但每当我尝试从服务,校长是空的。我试图访问使用所有的下列选项服务主体,但它总是空:
RequestContext.Principal
User.Identity
HttpContext.Current.User
Thread.CurrentPrincipal中
这里的我的代码基本思想:
MVC Controller:
public ActionResult Index() {
//Just create a test principal here to see if it's available in the service
IPrincipal temp = new GenericPrincipal(new GenericIdentity("myUserName"), new string[]{});
Thread.CurrentPrincipal = temp;
using (var client = new HttpClient()) {
client.BaseAddress = new Uri("myServiceAddress");
HttpResponseMessage response = client.GetAsync("resourceString")).Result;
...Code to deal with result
}
}
Web API Controller:
[HttpGet]
public HttpResponseMessage MyAction() {
if (User.Identity == null || !User.Identity.IsAuthenticated) {
//So sad
} else {
//Do some work
}
}
现任校长总是空的,不管我如何尝试访问它。