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

0

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

profile picture
EXPERTE
gefragt vor 6 Monaten24 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen