[英]Getting User.Identity.Name after AspNet OpenAuth Login MVC
我正在使用OAuth通过Facebook来吸引用户。
我正在使用以下方法成功注册:-
Request.GetOwinContext().Authentication.SignIn(id);
这会授权用户。 我可以使用User.Identity.IsAuthenticated进行检查
但是我无法使用User.Identity.Name获取用户的名称或任何详细信息。
如何获得刚通过身份验证的用户的名称,而无需返回数据库?
您无法从User.Identity.Name
获得任何信息的原因是,因为没有实际的用户记录可从中提取该信息,这意味着访问数据库仍然无济于事。 实际上,登录提供程序登录名与系统用户登录名分开处理,位于单独的表中。 它们可以而且经常与实际的用户帐户绑定,但是不必一定要绑定。 提供者登录足以验证身份,有时可能只需要这些即可。 如果确实需要用户信息,则需要在成功的提供者登录后创建用户记录,并将其与提供者登录相关联。
我想到的最好的回答是添加声明,并在答案中添加Name声明。
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)
};
我添加的名称声明将填充User.Identity.Name字段。
我希望这可以帮助别人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.