【发布时间】:2020-04-27 10:24:29
【问题描述】:
使用下面的代码通过自定义声明登录,它工作正常。
private async Task SignInAsync(ApplicationUser user)
{
var claims = await _claimsPrincipalFactory.CreateAsync(user);
claims.Identities.First().AddClaims(new[]
{
new Claim("xxx", "111"),
new Claim("yyy", "222")
});
await HttpContext.SignInAsync(IdentityConstants.ApplicationScheme, claims);
}
但是当尝试在服务中使用 HttpContext 访问时,如下所示
var claims = HttpContext.User.Identities.FirstOrDefault().Claims.ToList();
它返回 0 个声明。
请帮忙。
【问题讨论】:
-
什么时候使用这个服务?这是在中间件中吗?确保
app.UseAuthentication()在使用服务之前发生。 -
@Ruard 在服务中使用。也将 services.AddAuthentication 移到服务之上,但结果相同
-
我的意思是
Configure中的订单,例如app.UseMyMiddlewareThatCallsService(); app.UseAuthentication();。应该反过来。 -
谢谢@Ruard 它有效:)。请将您的消息添加为答案,以便我将其标记为正确。
-
我很高兴它现在可以工作了。我已经添加了答案。
标签: c# asp.net-core asp.net-identity identityserver4 asp.net-core-3.1