ASP.net 5身份,并非所有地方都经过身份验证



使用以下代码为用户登录后,我可以看到User.Identity.IsAuthenticated为true。同时设置UserName。

  var result = await signInManager.PasswordSignInAsync(vm.UserName, vm.Password, vm.RememberMe, false);

但是其他api中的标识没有设置

var ident2 = Thread.CurrentPrincipal.Identity;
var ident3 = ClaimsPrincipal.Current.Identity;

它们都是身份验证的。这在asp.net 5应用程序中是预期的吗?

当您让某人登录并且User.Identity.IsAuthenticated为true时,这意味着HttpContext.User.Identity被设置为已登录的用户。

Thread.CurrentPrinciple将返回用于承载应用程序的工作进程用户。

这在asp.net 5应用程序中是预期的吗?

是的,因为ClaimsPrincipal.CurrentThread.CurrentPrincipal(默认情况下由ClaimsPrincipal.Current内部使用)都不是由ASP.NET 5设置的。要检索与当前请求关联的用户,您唯一的选择是使用HttpContext.User(它不是静态的)。

不过,未来可能会发生变化:https://github.com/aspnet/Security/issues/322.

相关内容

  • 没有找到相关文章

最新更新