前面我們把 React native app 使用 redux 透過 api串接後端。但我們目前只有實作註冊系統而已,最精簡功能的的會員系統,除了註冊以外,應該還會有登入的部分,修改密碼,忘記密碼的功能還有修改使用者資訊。
再進階一點可能還會有分角色權限之類的,但我們這個專案先不用做到這麼複雜。
但其實在網路的世界,登入不是只是帳號密碼打對就好了。為了資料安全還還會需要有驗證的部分。不過我們先為了求快,不會做太過複雜的設計。
在會員系統的驗證方法中,主要有三種常見的驗證方式:Session-based 認證、JWT(JSON Web Token) 認證和 OTHA(OAuth 授權協議)。
這種方法使用伺服器來存儲用戶的會話(Session)。用戶登入後,伺服器會生成一個 Session 並將 Session ID 儲存在用戶的 Cookie 中。每次用戶發送請求時,伺服器會驗證 Cookie 中的 Session ID。
流程:
優點
缺點
JWT(JSON Web Token) 是一種無狀態的認證方法,將使用者的認證資訊編碼成一個 Token,並且在每次請求中由用戶攜帶 Token,伺服器根據 Token 進行驗證。JWT 的內容可以包含用戶的身份資訊,因此無需存儲在伺服器。Token 會附加在每次請求的標頭(header)中,伺服器通過驗證 Token 來授權用戶的操作。
工作流程
優點
缺點
OAuth(Open Authorization) 是一種用於跨應用程序間授權的開放標準協議。OAuth 並不僅僅是用來進行身份認證,它的主要目的是授權。例如,使用第三方服務(如 Google、Facebook 等)登入另一個網站,而無需輸入帳密。
流程:
優點
缺點
未來會希望可以加上OAuth的登入,例如 apple 或 line 登入。但應該不會做到這麼後面🤪
認證方式 | 優點 | 缺點 | 適用場景 |
---|---|---|---|
Session-based | 簡單,適合小型應用 | 需伺服器維護 session 狀態,不易擴展 | 小型應用或即時應用,如聊天室 |
JWT | 無狀態,易於擴展,跨平台支持 | Token 無法在過期前失效,流量相對較大 | 適合微服務架構、多平台應用,如 API 服務 |
OAuth | 無需存儲用戶密碼,提升安全性 | 實現複雜,依賴第三方服務 | 用戶可以使用第三方服務登入的應用 |
我們這個專案選擇使用JWT來實現,比較簡單,因為可以使用第三方套件直接使用。實作上比較簡單。明天會來設計一下簡單的資料庫還有 api文件開立的寫法再來是看能不能直接用 API文件讓 cursor直接實作出來。