關於shiro權限管理的一些總結


  項目中最近開發用到了shiro,你看了可能會解決剛接觸這塊知識不清楚如何下手 。shiro作為一款輕量級的權限管理框架,在項目中主要想管理用戶的登陸之后的頁面訪問,按鈕,數據的顯示。主要借用了shiro自己的頁面權限標簽。

當用戶登錄時-》先經過自己的一些過濾器 ,首先攔截登陸url在controller層  :  

spring-shiro.xml配置如下:

下面是對應的登陸驗證入口:

  

/**
     * 登錄頁
     */
    @RequestMapping("/login")
    public String login() {
     String msg="login";
     Subject subject = SecurityUtils.getSubject();
     if (subject.isAuthenticated()) {
      msg="redirect:/welcome";
     }
        return msg;
    }

------------

邏輯介紹:subject.isAuthenticated() 判斷用戶是否通過驗證  isAuthenticated() 獲得用戶信息封裝成token 經過繼承 AuthorizingRealm 實現兩個方法 為當前登錄的Subject授予角色和權限doGetAuthorizationInfo()

驗證當前登錄的Subject(doGetAuthenticationInfo)

  經過 doGetAuthenticationInfo 方法 查詢數據庫判斷token 成功或失敗,成功則進入下一個過濾器  繼承 FormAuthenticationFilter  我這里主要實現了 executeLogin() onLoginSuccess()  onLoginFailure()doCaptchaValidate() 四個方法 

    (1)onLoginSuccess()方法則是驗證通過 則執行  msg="redirect:/welcome"; 跳轉到歡迎界面,

    (2)onLoginFailure()方法則是驗證不通過 執行  msg="login"; 跳轉到登陸頁面。

    (3) executeLogin() doCaptchaValidate()這兩個方法是頁面驗證碼如果用戶信息驗證三次失敗之后,進入驗證碼驗證。防止惡意攻擊。

  接下來則是用戶信息驗證通過之后進入doGetAuthorizationInfo()方法進行用戶角色權限的緩存,緩存用戶頁面權限標簽。決定用戶在頁面看到的內容。

至於其他的關於shiro與spring的配置文件大同小異。具體的項目需要具體設置。總的來說shiro對於用戶權限的管理還是挺不錯的,上手較快。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM