簡體   English   中英

在AspNet OpenAuth登錄MVC之后獲取User.Identity.Name

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM