Shiro登錄成功之后跳到指定URL


     通常我們使用shiro,登錄之后就會跳到我們上一次訪問的URL,如果我們是直接訪問登錄頁面的話,shiro就會根據我們配置的successUrl去重定向,如果我們沒有配置successUrl的話,那么shiro重定向默認的/,這個邏輯看shiro的源碼就可以知道:

1.shiro會把請求信息保存到session中:

 

2.然后判斷是否已經登錄,如果沒有登錄,就會跳到登錄頁面,用戶輸入憑證之后就會交給FormAuthenticationFilter這個類來處理;

3.如果登錄成功之后就會調用一下方法重定向:

 

其中的issueSuccessRedirect方法如下:

FormAuthenticationFilter出來之后就會交給這個方法處理重定向:

 

    從上面就可以看出,shiro去session中找出之前的保存的請求,如果沒有的話就會跳轉到我們配置的successUrl!

 

     但是現實中往往有很多需求就是,要求我們登錄成功之后要跳到一個固定的頁面,通常是跳到首頁,那這時候我們應該怎么做呢?

通過查看源碼,我發現在shiro的webUtils工具類中有這樣一個方法:

 

意思是,獲取session中的請求信息,並且清理他;

有了這個方法之后就好辦了!

我們可以重寫FormAuthenticationFilter的onLoginSuccess方法,具體如下:

 

這樣,就實現了在交給shiro處理重定向的時候清理了session中保存的請求信息,這樣的話,就可以我們指定的url傳遞進去,這樣就實現了跳轉到我們指定的頁面;

其次,要把我們定義的過濾器配置一下:

注入:

 

加到shiro過濾器鏈中:

 

這樣使用authc的時候就是我們自定一個過濾器了,如果覺得用同個名字不好也可以自己定義名字!

 


免責聲明!

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



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