ssm jsp跳转jsp_去掉Shiro默认login.jsp跳转
生活随笔
收集整理的這篇文章主要介紹了
ssm jsp跳转jsp_去掉Shiro默认login.jsp跳转
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
測試過程中,發現shiro在認證不通過時會自動跳轉到login.jsp頁面,然后login.jsp界面找不到,會出現404的報錯,但是本項目是前后端分離的項目,不需要shiro幫我們跳轉啊!
還好shiro的權限驗證是基于過濾器實現的
解決如下:
1 增加過濾器????LoginFilter
/** * shiro登錄過濾器 * 默認情況下 如果shiro驗證失敗 會進入到login.jsp的路徑 但是目前不需要這么跳轉 */public class LoginFilter extends UserFilter { /** * 這個方法用于處理未登錄時頁面重定向的邏輯 * 因此,只要進入了這個方法,就意味著登錄失效了 * 我們只需要在這個方法里,給前端返回一個登錄失效的狀態碼即可 * @param request * @param response * @throws IOException */ @Override protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException { response.setContentType("application/json; charset=utf-8"); ObjectMapper mapper = new ObjectMapper(); // 自定義返回內容 // 本處返回一個自己定義的ResultVo對象 response.getWriter().write(mapper.writeValueAsString(new ResultVo(AppCode.ERROR,"無權訪問", AppConstant.NO))); }}2 設置ShiroConfig中創建ShiroFilterFactoryBean的Bean
????需要說明一下ShiroFilterFactoryBean中Map中String的含義
- authc(authentication)攔截器表示需要身份認證通過后才能訪問
- anon(anonymous)攔截器表示匿名訪問(即不需要登錄即可訪問)
- [urls] 部分的配置,其格式是:“url=攔截器[參數],攔截器[參數]”;
代碼如下 :
//Filter工廠,設置對應的過濾條件和跳轉條件@Beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(securityManager); //過濾器 Map filters = shiroFilterFactoryBean.getFilters(); filters.put("authc", new LoginFilter()); //權限 Mapmap = new HashMap<>(); //放開一部分權限 //文檔的權限 map.put("/doc.html","anon"); map.put("/swagger-resources/**", "anon"); map.put("/webjars/**", "anon"); map.put("/v2/api-docs", "anon"); map.put("/swagger-ui.html", "anon"); //登錄/注銷的權限 map.put("/employee/login", "anon"); map.put("/employee/logout", "anon"); //登出 // map.put("/logout", "logout"); //對所有用戶認證 map.put("/**", "authc"); //登錄 //shiroFilterFactoryBean.setLoginUrl("/login"); //首頁 //shiroFilterFactoryBean.setSuccessUrl("/index"); //錯誤頁面,認證不通過跳轉 //shiroFilterFactoryBean.setUnauthorizedUrl("/error"); shiroFilterFactoryBean.setFilterChainDefinitionMap(map); return shiroFilterFactoryBean;} 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的ssm jsp跳转jsp_去掉Shiro默认login.jsp跳转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis重启会清除数据吗_从零开始手写
- 下一篇: rancher2.0安装mysql_高可