如何获取当前连接的Cognito用户

0

【以下的问题经过翻译处理】 你好, 我正在使用ASP .NET Core Razor和AWS Cognito。 登录功能正常工作,但我尝试了很多方法,不知道如何使用C#获取连接用户的ID或用户名。 页面使用属性[Authorize]。 你能帮我获取连接的用户吗? 谢谢。

profile picture
专家
已提问 5 个月前16 查看次数
1 回答
0

【以下的回答经过翻译处理】 您好, 我找到了解决我的问题的方法,想与您分享。 我正在使用Cognito的托管UI。因此,当您想要保护页面时,您需要使用标记[Authorize]。 这是获取当前用户信息的函数。 用户变量来自PageModel。

 public async Task GetCurrentUser()
        {
            if (User != null)
            {
                if (User.Identity != null)
                {
                    if (User.Identity.IsAuthenticated)
                    {
                        var UserClaim = User.Claims.FirstOrDefault();

                        if (UserClaim != null)
                        {
                            if (UserClaim.Subject != null)
                            {
                                var username = (UserClaim.Subject.Claims.Count() > 2) ? UserClaim.Subject.Claims.ElementAt(2).Value : "";
                                var email = (UserClaim.Subject.Claims.Count() > 8) ? UserClaim.Subject.Claims.ElementAt(8).Value : "";
                                var token = (UserClaim.Subject.Claims.Count() > 3) ? UserClaim.Subject.Claims.ElementAt(3).Value : "";

                                UserData userData = new()
                                {
                                    Name = username,
                                    Email = email,
                                    Token = token
                                };
                                UserInfos = userData;
                            }
                        }
                    }
                }
            }
        }
profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则