设定:
ClaimsPrincipal
。httpContext.Authentication.SignInAsync("MyAuthScheme", myClaimsPrincipal, myAuthProperties)
httpContext.User.Claims
上的所有声明。结果:
pt。的索赔。 1不在httpContext.User.Claims
- 集合中。
为什么?
编辑:
var claims = GetPersistentClaims(username.ToLowerInvariant());
var identity = new ClaimsIdentity(claims, AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
var authenticationManager = _httpContextAccessor.HttpContext.Authentication;
var properties = new AuthenticationProperties {IsPersistent = isPersistent};
await authenticationManager.SignInAsync(AuthenticationScheme, principal, properties);
// This is where I inspect _httpContextAccessor.HttpContext.User.Claims.
答案 0 :(得分:0)
当您致电SignInAsync
时,身份验证处理程序会调用自己的SignInAsync()
。在您的情况下,它是cookie身份验证(它只是设置cookie)。
如果您要对用户进行身份验证,则需要致电authenticationManager.AuthenticateAsync(AuthenticationScheme);
。
修改
它在SignInAsync
之后无效,因为当前请求没有Cookie。但HttpContext.User = principal ;
可能是一种解决方案。
ps:通常您使用下一个请求的声明。