2017-01-07 66 views
2

概述如何在Auth0中存儲用戶全名而不是電子郵件地址?

當用戶登錄到我們的服務使用外部的授權供應商,如谷歌或Facebook然後將用戶名存儲爲你在Auth0「名稱」字段的期望。但是,當用戶使用他們的電子郵件地址註冊時,他們的電子郵件地址存儲在「名稱」字段中。

我們希望用戶真實姓名始終位於「姓名」字段中,以便與其他第三方服務輕鬆集成。

研究

從文檔:https://auth0.com/docs/metadata

Auth0允許你存儲元數據,或與每個用戶是 不是來自身份提供數據。有兩種 元數據:

user_metadata:存儲用戶屬性(如用戶偏好), 不影響用戶的核心功能; app_metadata:存儲可能影響用戶核心功能的信息(如用戶的支持計劃,安全角色或訪問控制組),其中包括 應用程序的功能或用戶可以訪問的內容。

因此,我們可以將用戶名存儲在元數據中,然後在Auth0返回配置文件時檢索它。這並不理想,因爲它增加了不必要的複雜性。

從官方論壇中提出問題: https://auth0.com/forum/t/editing-user-name/2944

用戶問:

如果我存儲用戶Auth0的數據庫,是不是真的不可能 設置他們的真實世界的名字?它似乎只接受電子郵件 地址。

,並得到響應:

它可以存儲或任何其他信息在 app_metadata或user_metadata。您可以通過 修改此信息儀表板,規則或API: https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id

基本上,似乎沒有要在文檔中或對如何解決這一問題的論壇的任何地方。

我們終於想出了一個方法,讓用戶的真實姓名與用戶配置文件一起返回。如果遇到這個問題,我已經在這裏發佈了答案,讓其他開發人員的生活更輕鬆一些。

回答

1

解決方案

基本上,如果你添加一個「名」屬性設置爲app_metadata用戶,然後Auth0將使用該值作爲用戶名,無論在儀表盤上,並通過返回用戶的個人資料時,一個GET請求。

例JSON:

"app_metadata": { 
    "name": "Sam Murray", 
    // Any other properties that you want to store 

} 
+0

仍然在這是不可取的,因爲我們需要在用戶模型的根中設置用戶名,而不是在app_metadata或user_metadata中 – ANinJa

1

我相信名字和姓氏有奔貶值,除了對用戶核心驗證字段,添加自定義系統的/核心元數據中app_metadata和存儲所有其他相關數據user_metadata,例如名字和姓氏。我這樣做,然後只是有一個屬性,連接這些FullName屬性。

相關問題