我有一個應用程式當前正在使用電子郵件和密碼進行帳戶身份驗證。每當用戶使用電子郵件和密碼登錄時,后端都會創建一個 JWT 會話令牌并將其回傳給應用程式。
這很好用。現在,我正在嘗試集成 Google 一鍵登錄 [OAuth],并且我也想保留我現有的登錄系統。
我無法弄清楚如何管理資料庫中用戶的會話/身份驗證。我現有的用戶表有:
Name, email, password, ...
在 OAuth 的情況下,我只會收到電子郵件和令牌。一旦我驗證了令牌,我將沒有密碼可以保存。那么,是否可以將用戶的 OAuth 唯一 ID 保存在一external_unique_id列中而不對密碼執行任何操作(如將其留空)?
請幫助我了解如何管理此類系統。特別是,當用戶第二次嘗試登錄時,如何處理external_unique_id已經存在的流程。我應該比較從 OAuth 收到的唯一 IDexternal_unique_id嗎?
謝謝!
uj5u.com熱心網友回復:
我不知道這是否是最好的方法,但您可以在用戶表中創建一個新列,告訴您用戶使用的登錄方法(在本例中為 google 或 api)。您并不真正需要 google 唯一 id,您只需要知道身份驗證是否成功即可生成新令牌。在第一次身份驗證時,您需要根據 google 負載創建一個新用戶。在接下來的程序中,只需使用他的電子郵件讓用戶進入資料庫,然后做任何你需要做的事情。
uj5u.com熱心網友回復:
我們有多種方法來進行身份驗證,
授權服務器生成令牌和身份驗證令牌:客戶端需要通過輸入憑據從服務器獲取令牌,服務器發回令牌。每次,應用程式都需要連接認證服務器進行認證
授權服務器與其他應用程式共享資料庫一旦用戶從 auth 獲得令牌。服務器。他可以在其他資源服務器中使用它。該資源服務器直接從資料庫中獲取令牌并自行進行身份驗證。
使用 JWT 進行授權。客戶端從 auth 獲取生成的 Jwt 令牌。服務器。身份驗證服務器可以與其他資源服務器共享公鑰。資源服務器可以使用公鑰對內容進行解碼。由于只有授權服務器有私鑰,所以只有 auth.server 才能生成正確的 jwt 內容
在我看來,您需要在資料庫中創建一個新用戶。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/317103.html
標籤:安卓 节点.js PostgreSQL 验证 谷歌一键
