摘要:本文信息本文創建于文章更名為一個簡單的用戶登錄與訪問權限控制設計前述系統用戶分為管理員用戶普通用戶管理員用戶有且唯一系統初始狀態不存咋任何用戶首次使用需創建用戶前端界面顯示控制用戶管理模塊根據本地判斷是否為管理員用戶顯示不顯示用戶管理模塊導
本文信息
本文創建于2018/03/22
2018/10/30 文章更名為 一個簡單的用戶登錄與訪問權限控制設計
前述系統用戶分為管理員用戶、普通用戶
管理員用戶有且唯一
系統初始狀態不存咋任何用戶,首次使用需創建用戶(admin)
前端界面顯示控制 用戶管理模塊根據本地credentials判斷是否為管理員用戶 => 顯示/不顯示用戶管理模塊
導航欄模塊功能頁面顯示導航欄;welcome/login不顯示導航欄
動態控制導航欄的顯示與隱藏
前端本地控制(進入頁面前)-- 路由守衛 welcome/login頁面是否本地存在credentials(包含token及用戶信息)(是否屬于已登錄狀態) => 跳轉至首頁/Next
發送請求至后端 => 后端確認是否首次使用系統(系統有/無任何用戶)=> welcome/login頁面
功能頁面是否本地存在credentials(是否屬于已登錄狀態) => 進入功能頁面/跳轉至login
Admin頁面是否本地存在credentials(是否屬于已登錄狀態) => Next/跳轉至login
本地credentials是否顯示用戶為管理員類型 => 進入Admin頁面/跳轉至404頁面
前端向后端請求驗證(進入頁面后)-- http攔截器 請求發送處理每個heep請求在請求頭帶上本地credentials中的token
請求響應處理返回401狀態碼 => 刪除本地credentials(如果有),跳轉至login
否則,不做特殊處理
后端登錄與鑒權 登錄邏輯后端接收到前端發送的用戶信息
將前端發送的用戶信息(密碼需在后端做hash處理)與數據庫用戶信息比對
若匹配,Next。若不匹配,返回incorrect/權限到期
緩存是否存在用戶登錄code(若不存在則生成隨機code并存入緩存)
簽入token,將用戶信息(id,type等)、code寫入token的payload,并設定token有效期
返回用戶信息及token至前端
用戶身份一般鑒定token解碼失敗:包括無token、token過期、token的payload不包含需要的信息 => 返回401
token解碼 => 得到用戶信息(包括id、code等) => 對比code與緩存code是否一致 => Next/返回401
根據token得到的用戶信息判斷是否為管理員 => 鑒定成功/Next
非管理員檢測用戶是否已被刪除(用戶刪除只更改數據庫狀態而非數據庫刪除) => 返回401/鑒定成功
創建用戶鑒權創建的是系統第一個用戶
后端接收到前端發送的創建的用戶信息 => 請求頭是否沒有攜帶token或是否創建的用戶類型為管理員 => Next/返回401
判斷是否為首次使用系統 => 創建用戶/返回401
創建的不是系統第一個用戶
后端接收到前端發送的創建的用戶信息 => 請求頭攜帶token => 判斷token本身是否過期 =>返回401/Next
解碼token => 解碼后拿到用戶信息 => 用戶是否為管理員且與緩存token比對 => Next/返回401
創建用戶 => 創建用戶是否成功 => 返回success/Next
是否已存在同名用戶 => 返回已存在同名用戶提示/返回fail
修改用戶信息鑒權用戶身份一般鑒定
若鑒定用戶為管理員,鑒權成功;否則,Next
鑒定需要修改的用戶信息是否為用戶自己 => Next/返回401
鑒定舊密碼是否正確 => 鑒權成功/返回舊密碼incorrect
刪除用戶鑒權用戶身份一般鑒定
鑒定用戶為管理員 => 鑒權成功/Next
Tips修改用戶密碼/刪除用戶成功后,刪除對應用戶的緩存里的登錄code
why not cookie => 無狀態、防xss攻擊、api多端共用
如何跨域共享用戶登錄狀態
已經使用了jwt,為何還需loggedin-code => tips1即為原因
包含第三方登錄的登錄模塊設計(OAuth協議)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93612.html
摘要:寫在前面在一款應用的整個生命周期,我們都會談及該應用的數據安全問題。用戶的合法性與數據的可見性是數據安全中非常重要的一部分。 寫在前面 在一款應用的整個生命周期,我們都會談及該應用的數據安全問題。用戶的合法性與數據的可見性是數據安全中非常重要的一部分。但是,一方面,不同的應用對于數據的合法性和可見性要求的維度與粒度都有所區別;另一方面,以當前微服務、多服務的架構方式,如何共享Sessi...
摘要:原文來自上一篇文章講了用戶的注冊,驗證和登錄,這一篇文章按照約定來說說之中的用戶和權限控制。探尋上面的一些列設置和代碼更改,已經實現了一小部分的用戶控制登錄的用戶才能發表。 原文來自: https://jellybool.com/post/programming-with-yii2-user-access-controls 上一篇文章講了用戶的注冊,驗證和登錄,這一篇文章按照...
摘要:框架具有輕便,開源的優點,所以本譯見構建用戶管理微服務五使用令牌和來實現身份驗證往期譯見系列文章在賬號分享中持續連載,敬請查看在往期譯見系列的文章中,我們已經建立了業務邏輯數據訪問層和前端控制器但是忽略了對身份進行驗證。 重拾后端之Spring Boot(四):使用JWT和Spring Security保護REST API 重拾后端之Spring Boot(一):REST API的搭建...
摘要:構造函數的第一個參數是對象,所以可以自定義緩存對象。在微服務各個模塊獲取用戶的這些信息的方法如下略權限控制啟用基于方法的權限注解簡單權限校驗例如,刪除角色的接口,僅允許擁有權限的用戶訪問。 showImg(https://segmentfault.com/img/remote/1460000019593311); 微服務架構 showImg(https://segmentfault.c...
閱讀 3512·2021-10-08 10:04
閱讀 862·2019-08-30 15:54
閱讀 2179·2019-08-29 16:09
閱讀 1346·2019-08-29 15:41
閱讀 2271·2019-08-29 11:01
閱讀 1734·2019-08-26 13:51
閱讀 1025·2019-08-26 13:25
閱讀 1805·2019-08-26 13:24