Shiro框架下,遇到404錯誤就需要重新登錄問題的解決辦法。

.?一般做法:

在web.xml里配置error-page.

<error-page>

<error-code>404</error-code>

<location>/WEB-INF/views/error/404.jsp</location>

</error-page>




項目當(dāng)中使用shiro安全框架,配置了非ServletContainer的session管理器。

如果自定義了sessionManager,即session不由web容器來管理,而是我們自己處理,比如講session放到couchbase上面或者其他分布式緩存上面,


此時,如果想同時使用< error-page>來處理404錯誤,就會造成session的重新建立,表現(xiàn)為已登錄用戶,訪問一個不存在的url,得到一個返回404頁面,然后再訪問正確的url地址又需要重新登錄。



之所以這樣是因為:

shiro的DefaultWebSessionManager把session自己管理起來了,不放到web容器里,那么當(dāng)發(fā)生404時,web容器在處理過程里發(fā)現(xiàn)容器里沒有session,那么就會建立一個新的sessionid,然后把sessionid綁定到請求上。于是shiro框架就認(rèn)為是一個新的session來了,但是沒有登錄,所以自動跳轉(zhuǎn)到login頁面。




解決辦法

shiroFilter攔截器下加入下面代碼



完整配置


一定要加這幾行

<dispatcher>REQUEST</dispatcher>

? ? ? ? <dispatcher>FORWARD</dispatcher>

? ? ? ? <dispatcher>INCLUDE</dispatcher>

? ? ? ? <dispatcher>ERROR</dispatcher>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一:富誠集團(tuán)發(fā)展歷程 1987年富誠集團(tuán)誕生溫州 1999年杭州分公司成立 2000年南京分公司成立 2003年成...
    DephniREN閱讀 1,596評論 0 0
  • 對于世上的萬物生靈, 死亡遲早會降臨, 要為守護(hù)先祖的遺骨和信仰的神殿, 去直面強敵并力戰(zhàn)而亡。 ——至暗時刻 獻(xiàn)...
    曉堇viola閱讀 574評論 0 0
  • 自信點,別,害,羞 (1)想想你想改變什么,為什么要改變 不是每個人都能圓滑地應(yīng)對各種社交場合,所以,我們不要浪費...
    海蓉sarah閱讀 717評論 0 1
  • 點解你做乜都做唔好 點解你做人咁失敗 點解你唔努力,點解咁懶散 點解人家對你好,你要傷害人家 點解你要做人,點解你...
    梨花頌閱讀 334評論 0 0

友情鏈接更多精彩內(nèi)容