微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

首次登录 ASP.NET Core 时未读取的声明值

如何解决首次登录 ASP.NET Core 时未读取的声明值

我为我的 asp.net 核心应用程序创建了一个新用户。在登录时,我首先删除了声明,然后使用以下代码添加了声明,从而为该用户添加了声明。

               List<Claim> AllClaims = new List<Claim>()
                {
                    new Claim("UserId",userdetails.UserId.ToString()),new Claim(ClaimTypes.Name,userdetails.LoginName),new Claim("FullName",userdetails.FirstName + " " + userdetails.LastName),new Claim("ChurchId",userdetails.ChurchId.ToString()),new Claim("Email",userdetails.Email),new Claim("ChurchName",userdetails.Church.Name),new Claim("IsSuperAdmin",church.IsSuperAdmin.ToString()),new Claim("ChurchGuid",userdetails.Church.GUID.ToString()),new Claim("IsFamilyUnitMember",userdetails.IsFamilyUnitMember.ToString()),new Claim("FamilyUnitId",userdetails.FamilyUnitId.ToString()),new Claim(ClaimTypes.Role,role1),};

                var resultClaims = await userManager.RemoveClaimsAsync(IdenUser,AllClaims);
                resultClaims = await userManager.AddClaimsAsync(IdenUser,AllClaims);
                ClaimsPrincipal currentUser = this.User;
        

此后,在首次登录期间无法使用以下控制器代码访问此用户声明的值。但是检查时声明的值会进入 AspNetUserClaims 表。第二次登录代码正常工作。

        ClaimsPrincipal currentUser = this.User;
        var currentUserId = Convert.ToInt32(currentUser.FindFirst("UserId").Value);
        var churchId = Convert.ToInt32(currentUser.FindFirst("ChurchId").Value);
        var Role = currentUser.FindFirst(ClaimTypes.Role).Value;

会是什么原因?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。