導航:首頁 > 文件管理 > 動態修改shiro配置文件

動態修改shiro配置文件

發布時間:2025-08-20 13:22:17

㈠ 給女朋友講某寶是如何設計用戶許可權管理的(一)

一、概述

java應用系統設計過程中,用戶認證、用戶授權、鑒權是繞不過去的話題。

如果這個許可權管理的設計,沒有做到與業務系統的隔離,拓展性不夠強,很容易就會拖後腿。

這個問題應該做過開發的同學都會有所體會。

現在網路上的各種關於許可權管理的框架比較主流的有 Apache Shiro,Spring Security,Sa-Token(新興起的一個優秀框架)。

這里會有同學說,既然已經有這么多的成熟優秀的許可權管理框架,為什麼還有再給大家介紹這種實現思路。

在本人工作和學習的過程中,經常會使用這些優秀的許可權管理框架。

但是,一旦是這些三方框架出現的異常和問題,想要排查,就比較麻煩。要麼就是靠著網路大家的經驗。要麼就是猛扒代碼,一點點去排查。

三方框架對於我們使用者來說,就像是一個黑盒。這一點一直讓我覺得有點不順暢。

同學們,誰不想要一個自己知根知底的的許可權管理框架呢。

二、框架使用體驗

2.1 項目初始化配置

Springboot老三樣。

引入pom依賴:


修改配置文件:

2.2 用戶登錄

自定義一個憑證類


自定義一個憑證類認證器:

這個認證器很簡單 就是默認admin 密碼 123456 然後給與了固定的角色和全部的資源。實際應用中應該從資料庫中獲取到用戶的許可權 並組織返回的securityAuthority。


開放認證介面:

2.3 許可權驗證

路由級別鑒權:

不用做其他額外的配置 只需要打上@HasUrl 就會獲取到Controller層的當前url地址,並校驗用戶是否有訪問該url的許可權。

並將解析後的用戶信息放到方法的SecurityAuthority參數中

在第一步用戶登錄時,默認給了SecurityRes.allUrlRes() ,則配置了 /** 的url訪問許可權。


方法級別鑒權


驗證用戶是否登錄

三、時間地點人物

想要描述一個事情,都是將時間地點人物介紹完,才能吧事情描述清楚。

介紹這個設計思路也需要介紹前提:

3.1 什麼時候用這個框架

顯然,如果系統需要提供用戶認證、用戶授權、用戶鑒權的時候,就需要有一個許可權管理的模塊。

整個流程應該是:

用戶認證 --> 頒發token(用戶授權) --> 用戶鑒權 --> token回收

3.2 框架要提供哪些能力


以上能力老生常談就是最基礎的許可權管理。

3.3 框架應該有哪些抽象組件

這個問題是面向對象開發的java程序員必須要好好思考的問題,就是當你接到一個需求時,如何以面向對象的思維來分析和設計程序來完成需求。

3.3.1 用戶認證

用戶認證,最最常見的場景就是用戶名密碼登錄。


在這個場景中可能存在:
用戶名+密碼、用戶名+密碼+驗證碼、手機號+驗證碼、郵箱+驗證碼 ...... 這么多的登錄方式。

而通常來驗證這些登錄信息是否合法,一般都是要去資料庫中讀取用戶的注冊信息來完成認證。

這個場景下可以抽象出來的類有:

1. 憑證類:用戶名+密碼、用戶名+密碼+驗證碼、手機號+驗證碼、郵箱+驗證碼 ......

2. 憑證類驗證器:用來驗證用戶上傳的憑證是否是合法的。

3.3.2 用戶授權

當用戶完成認證憑證驗證後,伺服器應該返回一個用戶的口令(token),給用戶使用。

並且用戶的token應該可以關聯並攜帶出用戶綁定的所有資源許可權,和角色、部門、崗位等等信息。

用戶的資源又分為:

靜態資源:

菜單、按鈕等靜態資源

文檔、圖片等靜態資源

動態資源:

對某種資源的CURD許可權:如 是否可以對 sys_user表數據進行CURD。


這個場景下可以抽象出來的類:


其中的崗位和部門,有些許可權管理框架中沒有,有的或許有一個,這里不糾結這個問題,無論是部門還是崗位,其實都是提供了一種許可權判斷的維度,類型給用戶打上一種標簽。

3.3.3 token管理

生成用戶token後,所有的token需要管理起來。可以用來統計和維護。

所以需要將上一步獲取到的用戶許可權描述類的信息與token建立一種映射關系。從而可以通過token獲取到用戶的各種信息。

這個場景可以抽象出來的類:

Token管理類:用來管理所有生成的token。並建立用戶信息與token的關聯關系。

3.3.4 用戶鑒權

當用戶通過用戶認證和用戶授權後,就獲取到了他的token口令。

每次用戶來訪問服務資源時,都需要攜帶token,當伺服器收到請求後,需要通過token獲取到用戶的所有的許可權信息,來判斷用戶是否可以訪問當前資源。

這個場景似乎沒有可以抽離出來的類,而是我們要找到一種用戶鑒權的方案。

這里,根據以往的經驗,基於Spring的AOP切面編程應該是對使用者最友好的方式

所以這里總結下我們需要鑒權的類型:

四、小結

上面鋪墊了那麼些,其實只是想讓大家能跟筆者有一個相同的認知。

先梳理下上面總結出來的類。

憑證類、憑證類驗證器、token生成器、token管理器。

以及,基於AOP實現的用戶鑒權方案。

大致思路:


未完待續。。。

㈡ 領課教育—在線教育系統

領課教育—在線教育系統是一個普適於全行業的分布式在線教育平台。以下是關於該系統的詳細介紹:

此外,領課教育項目還提供了豐富的截圖和流程圖說明,直觀呈現系統內部架構與各種功能操作流程,方便用戶理解和上手。同時,用戶可以通過碼雲和Github訪問項目地址,進行訪問、研究或者貢獻代碼。

閱讀全文

與動態修改shiro配置文件相關的資料

熱點內容
阻止運行哪個版本好用 瀏覽:614
qq空間怎麼恢復視頻文件在哪裡 瀏覽:193
學編程適合聽什麼歌 瀏覽:431
trixx超頻軟體教程 瀏覽:226
後台有程序在運行然後強制關閉 瀏覽:424
plc的顯示屏如何編程 瀏覽:93
網路用語近義詞有哪些 瀏覽:166
ps崩潰轉存為dmp文件 瀏覽:423
網頁引用js文件路徑 瀏覽:333
iphone5的網路設置在哪 瀏覽:413
ug編程M00在哪裡設置 瀏覽:660
蘋果的carplay支持哪些app 瀏覽:900
編程貓中血條怎麼設置 瀏覽:880
win81store文件夾 瀏覽:859
python打開linux文件 瀏覽:30
labview編程框圖怎麼復制 瀏覽:42
別克英朗如何刪除app 瀏覽:868
java介面常見問題分析 瀏覽:577
如何將一列數據另一列數據互補 瀏覽:50
海南哪些地方有電信5g網路 瀏覽:537

友情鏈接