1. 程式人生 > >Shiro 之 SecurityUtils 報錯

Shiro 之 SecurityUtils 報錯

問題起源: 

    最近在往公司現有的專案中新增 Shiro 框架, 配置都是 CV 過來的. 導致點選登入時, SecurityManager 不能正確呼叫

 

原因: 

    shiro 在執行時, 是先在 web 中找到 shiroFilter, 然後再去找裡面的具體的配置, 我的是跟 spring 結合的, 所以裡面的配置檔案是 applicationContext-shiro.xml 檔案, 裡面配置了 SecurityManager, 後臺程式碼是通過 SecurityUtils.getSubject(); 獲取的當前的 Subject, 所以是 SecurityUtils 報錯了.

解決辦法: 

    我的專案是與 struts 框架的, 所以把 strutsFilter 放在 shiroFilter 的後面就可以了. 

總結: 

    是因為 web.xml 裡面的程式碼是由上而下執行的, 所以你的路徑是由 struts 來完成的, 而後面的 shiroFilter 不起作用了,所以你先執行 shiroFilter 就好了。