mall改造:自定義註解和shiro權限結合,解放生產力

2020-12-22 程式設計師架構師13

好多人私信我,是不是北京疫情嚴重被隔離了,這裡先謝謝大家的關係。是因為最近不是要考核了,都在做考核的事情,也在國家應急部對這次南方的洪澇災害進行支援。

這次我們聊一聊litemall中的shiro和自定義註解的組合

通過上面的介紹,我們可以得知,litemall本次採用的方式,是沒有將前端與按鈕的權限一起放到資料庫中,而是將前端的頁面和權限和按鈕權限,通過註解的方式獲取。

通過上面兩張圖我們可以看出,傳統的權限表,是會有接口,按鈕,頁面不同類型的按鈕的。但是我們在第二張圖上,只看到了shiro格式的後臺權限,這裡是資料庫層次上的不通,當然個人更推薦資料庫保存,因為我沒有想litemall 作者這樣開發過,不知奧會不會有什麼不方便的地方,感覺使用作者的方法不是很靈活,優點是不用再去關注前端和按鈕權限的。

我們可以看見作者這裡採用了自定義註解,我先來解釋一下注解:

RetentionPolicy.RUNTIME:註解不僅被保存到class文件中,jvm加載class文件之後,仍然存在

@Target - 標記這個註解應該是哪種 Java 成員,TYPE:用於描述類、接口(包括註解類型) 或enum聲明,METHOD:用於描述方法

@RequiresPermissionsDesc(menu = {"商場管理", "品牌管理"}, button = "查詢")

menu 菜單,button 按鈕,這裡的意思說明,前端的那些按鈕或頁面是可以調用這個接口的。

剛才我們看過資料庫,資料庫中的數據是 admin:brand:list

但是接口返回的和前端獲取到的是 GET /admin/brand/list

說明前端的頁面權限不是資料庫的而是通過處理過返回的,下面的是代碼了的一段debug,我們通過圖中看出,通過toApi()方法,將後端的權限,改成了前端Api權限。 前端獲取對應的權限進行權限管理。

下面兩個截圖是權限由 admin:brand:list 到 GET /admin/brand/list 的大體轉換流程

通過上面的幾個截圖,相信大家對我說的shiro+自定義註解有了基本的了解。

了解完了,我們就要開始思考,思考比看一遍或則敲一遍代碼有意義。

總結梳理:

前端發送請求獲取當前用戶權限-->

後臺shiro進行攔截,查看用戶是否登錄-->

shiro獲取當前用戶信息,獲取角色及後端接口權限-->

檢查緩存中是否已經有當前用戶的前端和按鈕權限-->

沒有通過掃描自定義註解,拿到註解中menu和button的值,進行數據整理-->

整理後的數據和用戶的權限校驗,返回用戶擁有的權限-->

前端拿到權限信息,進行頁面顯示控制。

首先我來總結一下,如果是簡單的項目使用litemall的這種權限方式我覺得挺好,簡單實用。

但是當項目比較大,或者前端使用的插件都不相同,所以有點時候會經常涉及到權限的改動,比方權限過期的問題,這個時候如果使用這種方法,每一次改動都需要修改代碼,在大項目的每一次發版都是嚴謹的,所以就不是很實用了。

看開源項目最重要的目的是學習,然後根據自己的實際清空去選擇使用,這裡謝謝作者給提供了一個新的思路。

喜歡點下關注,你的關注是我寫作的最大支持

相關焦點

  • Shiro權限管理框架(一):Shiro的基本使用
    Shiro提供了很多內置的過濾器,我們最常用的就是第一個和第二個。如果對其效果不滿意,我們還可以自定義過濾器實現權限控制。文檔地址:http://shiro.apache.org/web.html#default-filters細粒度權限控制如果需要更細緻的權限控制,請繼續往下添加配置,可以做到方法級別的權限控制。
  • Shiro 權限校驗分析
    Shiro 概述Shiro 是一款 Apache 提供的權限校驗框架, Shiro 同時也是一個強大且易用的 Java 安全框架,執行身份驗證、授權、密碼學和會話管理。使用 Shiro 的易於理解的 API,您可以快速、輕鬆地獲得任何應用程式,從最小的行動應用程式到最大的網絡和企業應用程式,特別是今天對權限校驗和管理特別嚴格,大家有必要對shiro 有一個基本的認識和學習。
  • Shiro入門這篇就夠了【Shiro的基礎知識、回顧URL攔截】
    )權限(權限名稱、資源id)角色(角色名稱)角色和權限關係(角色id、權限id)主體和角色關係(主體id、角色id)http://blog.csdn.net/hon_3y/article/details/61926175隨後,我們學習了動態代理和註解,我們也做了一個基於註解的攔截在Controller得到service對象的時候,service工廠返回的是一個動態代理對象回去Controller拿著代理對象去調用方法
  • Mall電商實戰項目開源,附源碼、教程合集
    打造一個業務與技術相結合的實戰項目!2018年初的時候一度想找個業務與技術相結合的開源項目學習下,但是一直沒有找到合適的,於是萌生了自己寫一個的想法。總感覺一個項目要是缺少了業務和應用場景,就好像沒有了靈魂。於是業務選擇了比較好理解的電商,技術選擇了流行的SpringBoot。
  • Spring Boot與Shiro整合實現用戶認證
    //設置安全管理器shiroFilterFactoryBean.setSecurityManager(securityManager);//添加Shiro內置過濾器/** * Shiro內置過濾器,可以實現權限相關的攔截器
  • 「網絡安全」關於Apache Shiro權限繞過高危漏洞的 預警通報
    近日,國家信息安全漏洞共享平臺(CNVD)公布了深信服終端檢測平臺(EDR)遠程命令執行高危漏洞,攻擊者利用該漏洞可遠程執行系統命令,獲得目標伺服器的權限。一、漏洞情況Apache Shiro是一個強大且易用的Java安全框架,用於執行身份驗證、授權、密碼和會話管理。
  • Apache Shiro反序化識別那些事
    1.1 關於Apache ShiroApache shiro是一個Java安全框架,提供了認證、授權、加密和會話管理功能,為解決應安全提供了相應的API:1.認證-用戶身份識別,常被稱為用戶」登錄」>● 自定義的 rememberMe欄位前通過在Cookie追加rememberMe欄位進判斷,實際上這個默認欄位的命名是可以修改的,Shiro支持在rememberMe管理中自定義名稱,可以通過在配置件進配置,如下的例子,將rememberMe設置成了rememberMeTK: 同理,在springboot
  • 瞭望|新時代持續解放和發展生產力再認識——專訪中國生產力學會...
    就如何理解人才、科學技術、自主創新等要素在新時代持續解放和發展生產力的定位和作用,《瞭望》新聞周刊專訪了中國生產力學會首席顧問王茂林。王茂林:黨中央對生產力發展的要素進行新的定位,這體現了對馬克思主義生產力思想的升華和發展。把人才、科學技術、自主創新等放在國家發展戰略的核心位置,對應的是生產力發展的三要素(勞動力、勞動工具、勞動對象),實質還是「解放和發展生產力」這一根本任務。
  • 「大學之制」 關鍵在解放學者和學術生產力
    大學作為學術性組織,其基本功能是教學、科研和社會服務,其根本目標是進行知識的傳承、創新和發展,學者是完成大學基本功能和根本目標的核心力量,「大學之制」要為解放學者和學術生產力提供制度保障。大學治理的進步史就是在制度上解放學者和學術生產力的歷史    制度的意義和價值是什麼?
  • 毛澤東思想之社會主義革命的目的是解放生產力
    在過去的六年中,前三年的工作主要是恢復國民經濟和進行前一革命階段中沒有完成的各項社會改革,主要是土地改革。從去年夏季以來,社會主義改造,也就是社會主義革命就以極廣闊的規模和極深刻的程度展開起來。大約再有三年的時間,社會主義革命就可以在全國範圍內基本上完成。社會主義革命的目的是為了解放生產力。
  • 30 分鐘學會如何使用 Shiro
    在解釋它們前首先必須要描述一下Shiro對於安全用戶的界定:和大多數作業系統一樣。用戶具有角色和權限兩種最基本的屬性。例如,我的Windows登陸名稱是learnhow,它的角色是administrator,而administrator具有所有系統權限。這樣learnhow自然就擁有了所有系統權限。
  • Shiro整合redis
    在實際落地過程中,會發現如果出現集群部署服務,那麼單個服務的shiro無法認證另一個服務下面的session.
  • Sprints—定義更靈活的角色權限
    項目的多樣化讓成員的角色更豐富更多變,在 Zoho Sprints 中根據不同的團隊組織,團隊規模和業務類型,定製更靈活更細緻的角色權限;可以通過創建自定義的角色,使用分組及標籤的形式來給團隊定義豐富的角色。
  • 30分鐘學會如何使用Shiro,看這篇文章就夠了!
    在解釋它們前首先必須要描述一下Shiro對於安全用戶的界定:和大多數作業系統一樣。用戶具有角色和權限兩種最基本的屬性。例如,我的Windows登陸名稱是learnhow,它的角色是administrator,而administrator具有所有系統權限。這樣learnhow自然就擁有了所有系統權限。
  • 滿幫&一汽解放發布定義車優享貨源 「超級卡車」全場景賦能貨運司機
    7月31日,一汽解放&滿幫定義車產銷20000輛暨獨家優享貨源發布會在南京舉行。會上,定義車優享貨源正式發布。據記者了解,定義車是網際網路平臺與卡車製造的首次深度結合,運用滿幫平臺大數據及全方位調研,結合一汽解放深厚的製造技術與創新思維,全新定義了卡車的生產參數。兩年來,定義車司機平均接單量、優質貨源較之前均提升了15%,車輛運營效率明顯提升,空駛率下降了20%,月接單量較平均水平多2單左右,司機年均收入增加4.2萬元,降低了疫情對司機收入的影響。
  • insp4j 輕量級權限框架 1.2.0 發布 - OSCHINA - 中文開源技術交流...
    insp4j就是抽象了一個group,把每個不同的子系統的權限設計區分隔離,不同的group,不同的用戶、操作權限、數據權限,這些信息統一封裝在InspAuthentication,需要業務系統來構造。
  • 復盤大集中模式下的角色權限設計
    在此框架下設計的權限模型,不管面向的企業對象如何變化,操作權限的設計思路都是不變的,僅需要對數據權限進行改造,即可滿足企業的業務使用。另外在企業運營中經常需要對組織架構和人員工作進行調整,相應地需要修改系統中訪問控制主體和權限的關係。而系統管理員由於不了解調整內容導致授權工作滯後,即使修改後也不一定能準確反映調整狀態,常需要多次補充修改,導致授權效率較低,影響正常的業務工作進程。
  • Spring註解配置和xml配置優缺點比較
    Spring註解配置和xml配置優缺點比較在昨天發布的文章《spring boot基於註解方式配置datasource》一文中凱哥簡單的對xml配置和註解配置進行了比較。然後朋友看到文章後,就問:那你說說這兩種區別。額,說真的,還真把凱哥給問蒙圈了。