无法检索登录后添加的声明



我需要临时向用户添加某些声明,其值可能会更改,因此我只需要在用户成功登录时才添加这些声明。但是当我在HttpContext.User中搜索这个说法时,它不存在。我不知道我做错了什么。这是我的登录控制器。

编辑:使用 ASP.NET 核心1.0和 ASP.NET 身份。不使用身份服务器。

public async Task<IActionResult> Login(LoginIdentityModel lim)
{
    var user = await _userManager.FindByEmailAsync(lim.username);
    if (user != null)
    {
        Claim c = new Claim("ProductUploadRequest", "Allow");
        await _userManager.AddClaimAsync(user, c);
        var result = await _signInManager.PasswordSignInAsync(user, lim.password, false, lockoutOnFailure: false);
        if (result.Succeeded)
        {
             var usr = HttpContext.User;//claim not found here
        }
}

await _signInManager.RefreshSignInAsync(user);应该在后续请求中更新HttpContext.User的声明。

根据此讨论,HttpContext.User不是通过SignIn调用更新的,而是设计使然:

通常,声明主体仅在与 Cookie 一起返回时,仅使用下一个请求的登录结果进行修改。

作为立即检索声明的解决方法,请尝试:

_userManager.GetClaimsAsync(user);

相关内容

  • 没有找到相关文章

最新更新