當前位置:
首頁 > 最新 > 乾貨——Spring-Security-Mybatis-Demo

乾貨——Spring-Security-Mybatis-Demo

SpringBoot下結合Mybatis,實現SpringSecurity的許可權認證Demo,與傳統RBAC不同之處在於:這裡我們省略了A這個環節。同時又有別於其他的SpringSecurity項目,區別在於:同時考慮了企業用戶和個人用戶,企業用戶可以分配子賬戶,並對子賬戶設置不同的角色,每個角色可執行的許可權範圍由註解來進行限制,同時,企業用戶及其子賬戶通過郵箱進行登錄,而個人賬戶則通過手機號碼進行登錄。


前言

按照慣例,先上項目源代碼:

Github: spring-security-mybatis-demo

項目ER圖如下所示:

看完ER圖,相信各位應該能清楚一件事情:

跟傳統的RBAC相比,這裡沒有A(Access)。

我們只對用戶進行角色的區分,具體哪一個角色具備哪些許可權,由註解來決定,如:


首先,請給項目Demo一顆Star ^-^ (不然會有人在後面畫圈圈詛咒你)

這個項目對用戶做了區分:個人用戶和企業版用戶。


授權路徑: auth/personal

授權刷新路徑:refresh/personal

授權登錄名:User表下的手機號碼

個人用戶授權

個人用戶使用手機號碼及密碼在auth/personal下獲取他們的授權token:

授權成功後,個人用戶只會有一個角色,就是:PERSONAL。

這意味著其他角色的API該個人用戶將無法訪問。(報401錯誤,當然,您可以自行修改錯誤代碼,比如返回登錄頁面)

同時也意味著,每一個用戶,可以擁有多個角色,這將有助於我們對角色等級的劃分進行區分。

比如,最高等級的BOSS用戶,也將同時是一個MANAGER用戶,同時也是一個EMPLOYEE用戶。

這樣設計的好處在於,我們在進行許可權判斷的時候,只需考慮最低等級的許可權,高許可權的用戶直接可以調用。

個人用戶認證

個人用戶獲取他們的Token之後,在使用中,只需要向請求Header中,添加一個"Authorization",其值應該設置為:"Bearer " + $,請注意這裡有一個空格的存在。

企業用戶使用郵箱及密碼在auth/Company下獲取他們的授權token:

對於企業用戶而言,默認的SQL對角色設置了三個:BOSS、MANAGER、EMPLOYEE,對於離職員工而言,只需要在User表下的isenabled中設置為0即可。

當然,您也可以自行進行角色的擴展,數量不受限制。

企業用戶授權

這裡以BOSS角色的帳號進行授權演示:

如果您是一名Manager用戶,那麼獲取Token的過程就會是:

企業用戶認證

企業用戶獲取他們的Token之後,在使用中,只需要向請求Header中,添加一個"Authorization",其值應該設置為:"Bearer " + $,請注意這裡有一個空格的存在。

這一點與個人用戶的登錄是一致的。

接下來的使用就比較簡單了:

BOSS用戶調用他的專屬API:

經理調用他的專屬API:(當然,BOSS也是可以調用的,因為在User_role表中,請注意看,我們的BOSS用戶擁有其他所有角色的roleID。)

經理想調用BOSS的專屬API:

(完)

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序猿LM 的精彩文章:

TAG:程序猿LM |