91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Matrxi-Web的權限設計是什么

發布時間:2021-12-02 17:01:47 來源:億速云 閱讀:135 作者:柒染 欄目:大數據

Matrxi-Web的權限設計是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Matrxi-Web權限設計

對于一個后端系統來說,權限是基礎設施,是安全保障。沒有權限,系統可能隨時面臨各種風險,所以權限設計對后端系統來說至關重要。在Javaweb開發中,有很多權限開發的框架,比如shrio、Spring security,但是都比較重量級。作為一個后端管理系統來說,用這樣的權限開發框架會拖慢開發進度。所以在這個項目中,我寫了一個更簡單的權限控制框架,使用很簡單。

權限設計思路

在Matrxi-Web項目中,請求需要攜帶Token,請求經過Filter的時候(實際項目是使用Spring MVC的HandlerInterceptor),會判斷該請求Url是否有Token。如果有Token,解析Token獲取用戶信息,如果解析Token失敗,則進入白名單判斷的邏輯,如果解析成功,則請求通過。如果請求不攜帶Token或者解析Token失敗,則判斷是否Url白名單里(比如登錄接口,swagger文檔等接口),如果請求不在url白名單內,則提示無權限訪問。

在Filter層初步判斷,如果請求通過,則請求進入具體類的方法里,比如Controller的方法。如果類方法加上了自定義的注解@HasPermission,則該類在加載的時候會生成一個aroud類型的切面(即spring的aop),在執行具體類的方法前,會判斷該用戶是否具有對該方法的調用權限,從而起到權限控制的作用。

Matrxi-Web的權限設計是什么  
 

RBAC

在權限控制數據層面,最常用的做法是RBAC(Role-Based Access Control),即基于角色的權限的控制。在RBAC中,權限與角色相關聯,用戶通過成為適當角色的成員而得到這些角色的權限。這就極大地簡化了權限的管理。

RBAC  認為授權實際上是Who 、What 、How 三元組之間的關系,也就是Who 對What 進行How 的操作,也就是“主體”對“客體”的操作。

  • Who:是權限的擁有者或主體(如:User,Role)。
  • What:是操作或對象(operation,object)。
  • How:具體的權限(Privilege,正向授權與負向授權)。

在Matrix-Web項目中,也是使用了經典的RBAC,即每個用戶擁有一個或多個角色,角色賦予具體的菜單操作權限。Martrix-Web的數據庫設計標如下圖所示:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ziItvtN3-1590667416151)(https://static.javajike.com/img/2020/05/matrix/matrix-web009.jpg)]

用戶Id(user_id)和角色Id(role_id)綁定,角色Id(role_id)和menu_code(菜單編碼綁定),所以在創建用戶的時候需要錄入用戶的角色,而角色又需要綁定權限。前端界面錄入權限按鈕,展示圖如下:[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4S0rbHyf-1590667416151)(https://static.javajike.com/img/2020/05/matrix/mw010.jpg)]

用戶綁定角色,展示圖如下:[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aRbyW5HT-1590667416152)(https://static.javajike.com/img/2020/05/matrix/mw011.jpg)]

 

Token設計

在系統設置中,有一個重要的東東是Token,Token代表了用戶,幾乎所有的請求都需要攜帶Token。那么Token是怎么來的呢?它是根據用戶名生成的。那么什么情況會生產呢?用戶登錄成功后,生成Token,返回給瀏覽器,瀏覽器存儲在LocalStorage里面,后續的所有請求必須攜帶Token。這樣根據Token,服務端就能知道每個請求的用戶是誰,從而判斷該請求的用戶是否有權限。

Matrxi-Web的權限設計是什么  
 

上面的幾個小結講述了Matrix-web整體實現的權限控制的思路。現在來做一下總結:

  • 首先,用戶需要登錄,填用戶名、密碼,后端接收到登錄請求,進行用戶、密碼的校驗,校驗成功后則根據用戶名生成Token,并返回給瀏覽器。
  • 瀏覽器收到Token后,會存儲在本地的LocalStorge里。
  • 后續瀏覽器發起請求時都攜帶該Token,請求達到后端后,會在Filter進行判斷,首選判斷是否為白名單url(比如登錄接口url),如果是則放行;否則進入Token驗證。如果有Token且解析成功,則放行,否則,返回無權限訪問。
  • Filter判斷后,請求達到具體的Controller層,如果在Controller層上加上了權限判斷的注解,則生成代理類。代理類在執行具體方法前會根據Token判斷權限。
    • 取出用戶的Token并解析得到該請求的userId,根據userId在從存儲層獲取用戶的權限點。權限控制是RBAC這種方式實現的。
    • 獲取到用戶權限點后,獲取權限判斷的注解的權限信息,看用戶權限點是否包含權限注解的權限信息,如果包含,則權限校驗通過,否則則請求返回無權限。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

瓦房店市| 黎川县| 黑龙江省| 灵石县| 张北县| 石河子市| 探索| 扶绥县| 枞阳县| 清水河县| 肃宁县| 宣威市| 黄梅县| 湾仔区| 华安县| 银川市| 池州市| 丘北县| 屯门区| 桦南县| 寻乌县| 孝昌县| 加查县| 张家口市| 封丘县| 谷城县| 渝中区| 定边县| 息烽县| 天全县| 揭西县| 铅山县| 盖州市| 交城县| 中西区| 泸西县| 嘉荫县| 金塔县| 寿光市| 正定县| 兴义市|