使用以下代码签署用户后,我可以看到User.Identity.IsAuthenticated
为真。 UserName也是设置的。
var result = await signInManager.PasswordSignInAsync(vm.UserName, vm.Password, vm.RememberMe, false);
但其他apis中的身份未设置
var ident2 = Thread.CurrentPrincipal.Identity;
var ident3 = ClaimsPrincipal.Current.Identity;
他们都不经过身份验证。这是asp.net 5应用程序中的预期吗?
答案 0 :(得分:1)
当您签到某人并且User.Identity.IsAuthenticated
为真时,这意味着HttpContext.User.Identity
设置为登录用户。
Thread.CurrentPrinciple
将返回用于托管应用程序的工作进程用户。
答案 1 :(得分:1)
这是否在asp.net 5应用程序中是预期的?
是的,因为ASP.NET 5都没有设置ClaimsPrincipal.Current
和Thread.CurrentPrincipal
(默认情况下由ClaimsPrincipal.Current
内部使用)。要检索与当前请求关联的用户,您唯一的选择是使用HttpContext.User
(这不是静态的)。
但将来可能会发生变化:https://github.com/aspnet/Security/issues/322。