Shiro登入成功之後跳到指定URL

2021-07-23 20:47:44 字數 1245 閱讀 8924

通常我們使用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的時候就是我們自定乙個過濾器了,如果覺得用同個名字不好也可以自己定義名字!

驗證登入成功標識

重新登入 false 登入失敗提示列表 請輸入驗證碼 密碼錯誤 認證失敗 for h 1 to 2 資訊 sefindelementbyid ssessionid,msg selementid 資訊 segetelementtext ssessionid,selementid,stext trace...

登入成功之後跳轉回原先載入的鏈結

1 需登入之後才能檢視的頁面,首先判斷是否登入,未登入時去到登入頁面,引數formurl的值是登入前要去到的鏈結 1 if isuserlogin 2 登入頁面指令碼 1 function else 10if username val 13if password val 16if str.lengt...

使用Shiro實現登入成功後跳轉到之前的頁面

這個問題是之前在做登入註冊模組時遇到的需求,如何使用者直接訪問登入頁面,可以控制直接跳到首頁,但是如果是使用者沒有登入直接訪問了購物車等需要經過身份認證的頁面,或者是因為session超時,使用者需要重新登入,那麼這時跳回之前的頁面就是提公升使用者體驗的事情。實現此功能比較好的方法是用ajax的方式...