最近考慮登入的時候,想來想去就想到一兩種,想看看大家有沒有好的想法。請大家不要提sso,不討論這個,只是討論一個簡單的登入有哪些實現方式。
搞過一點登入庫,假設一個公司有形如 A B C 的多個子站點,常見模式大致如下:
每個網站由後端框架維護獨立的登入訊息,在 HTML 範本中傳回是否登入的狀態。這時造訪不同子網站需要重新登入。
每個站點由後端框架維護 SSO 訊息,使用者在登入每個子站前,後端將請求重定向至 SSO 網站以將登入狀態同步,從而在登入 A 後,登入 B 時登入狀態能夠同步。
前後端分離,每個子站頁面載入時,由前端框架跨網域請求 SSO 站點,同步登入狀態。
前後端分離,前端部署支援 SSO 的 Node 服務,將 SSO 放在 Node 層完成,前端和後端業務邏輯中均完全剝離登入邏輯(目前我司的方案)。
具體實現上有很多細節,如token 字段是放在http 頭還是url 參數還是cookie 還是json 屬性中,或者token 通過何種規則生成,過期時間多少,登錄狀態持久化用localStorage 還是sessionStorage 等,最後基本殊途同歸,就不展開了。
提供一個登陸頁面,提交用戶資訊後和資料庫匹配,登陸成功用戶資訊寫到 session,夠簡單不
搞過一點登入庫,假設一個公司有形如 A B C 的多個子站點,常見模式大致如下:
每個網站由後端框架維護獨立的登入訊息,在 HTML 範本中傳回是否登入的狀態。這時造訪不同子網站需要重新登入。
每個站點由後端框架維護 SSO 訊息,使用者在登入每個子站前,後端將請求重定向至 SSO 網站以將登入狀態同步,從而在登入 A 後,登入 B 時登入狀態能夠同步。
前後端分離,每個子站頁面載入時,由前端框架跨網域請求 SSO 站點,同步登入狀態。
前後端分離,前端部署支援 SSO 的 Node 服務,將 SSO 放在 Node 層完成,前端和後端業務邏輯中均完全剝離登入邏輯(目前我司的方案)。
具體實現上有很多細節,如token 字段是放在http 頭還是url 參數還是cookie 還是json 屬性中,或者token 通過何種規則生成,過期時間多少,登錄狀態持久化用localStorage 還是sessionStorage 等,最後基本殊途同歸,就不展開了。
提供一個登陸頁面,提交用戶資訊後和資料庫匹配,登陸成功用戶資訊寫到 session,夠簡單不