在AspNet OpenAuth登录MVC之后获取User.Identity.Name

时间:2015-04-08 19:35:19

标签: c# asp.net-mvc facebook

我正在使用OAuth用Facebook唱出用户。

我使用以下方法成功注册: -

Request.GetOwinContext().Authentication.SignIn(id);

这使用户自动化。我可以使用 User.Identity.IsAuthenticated

进行检查

但我无法使用 User.Identity.Name 获取用户名或其任何详细信息。

如何在不返回数据库的情况下获取刚经过身份验证的用户名?

2 个答案:

答案 0 :(得分:1)

您无法从User.Identity.Name获取任何内容的原因是因为没有实际用户记录来提取该信息,这意味着点击数据库无论如何都无法帮助您。登录提供程序登录与系统用户登录分开处理,事实上在单独的表中。它们可以并且经常与实际的用户帐户绑定,但它们不一定非必要。提供者登录足以进行身份​​验证,有时可能需要这些。如果您确实需要用户信息,那么您需要在成功提供者登录后创建用户记录并将其与提供者登录相关联。

答案 1 :(得分:0)

我提出的最佳回应是添加声明并将名称声明添加到答案中。

var newClaims = new Claim[]
                        {
                            new Claim(ClaimTypes.NameIdentifier, PersonId.ToString()),
                            new Claim(ClaimTypes.GivenName, FirstName),
                            new Claim(ClaimTypes.Surname, LastName),
                            new Claim(ClaimTypes.Name, FirstName + LastName),
                            new Claim(ClaimTypes.Email, Email)
                        };

我添加的Name声明将填充User.Identity.Name字段。

我希望这有助于某人。