[英]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.