日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ssm jsp跳转jsp_去掉Shiro默认login.jsp跳转

發(fā)布時(shí)間:2025/6/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ssm jsp跳转jsp_去掉Shiro默认login.jsp跳转 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

測試過程中,發(fā)現(xiàn)shiro在認(rèn)證不通過時(shí)會自動跳轉(zhuǎn)到login.jsp頁面,然后login.jsp界面找不到,會出現(xiàn)404的報(bào)錯(cuò),但是本項(xiàng)目是前后端分離的項(xiàng)目,不需要shiro幫我們跳轉(zhuǎn)啊!

還好shiro的權(quán)限驗(yàn)證是基于過濾器實(shí)現(xiàn)的

解決如下:

1 增加過濾器????LoginFilter

/** * shiro登錄過濾器 * 默認(rèn)情況下 如果shiro驗(yàn)證失敗 會進(jìn)入到login.jsp的路徑 但是目前不需要這么跳轉(zhuǎn) */public class LoginFilter extends UserFilter { /** * 這個(gè)方法用于處理未登錄時(shí)頁面重定向的邏輯 * 因此,只要進(jìn)入了這個(gè)方法,就意味著登錄失效了 * 我們只需要在這個(gè)方法里,給前端返回一個(gè)登錄失效的狀態(tài)碼即可 * @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(); // 自定義返回內(nèi)容 // 本處返回一個(gè)自己定義的ResultVo對象 response.getWriter().write(mapper.writeValueAsString(new ResultVo(AppCode.ERROR,"無權(quán)訪問", AppConstant.NO))); }}

2 設(shè)置ShiroConfig中創(chuàng)建ShiroFilterFactoryBean的Bean

????需要說明一下ShiroFilterFactoryBean中Map中String的含義

  • authc(authentication)攔截器表示需要身份認(rèn)證通過后才能訪問
  • anon(anonymous)攔截器表示匿名訪問(即不需要登錄即可訪問)
  • [urls] 部分的配置,其格式是:“url=攔截器[參數(shù)],攔截器[參數(shù)]”;

代碼如下 :

//Filter工廠,設(shè)置對應(yīng)的過濾條件和跳轉(zhuǎn)條件@Beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(securityManager); //過濾器 Map filters = shiroFilterFactoryBean.getFilters(); filters.put("authc", new LoginFilter()); //權(quán)限 Mapmap = new HashMap<>(); //放開一部分權(quán)限 //文檔的權(quán)限 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"); //登錄/注銷的權(quán)限 map.put("/employee/login", "anon"); map.put("/employee/logout", "anon"); //登出 // map.put("/logout", "logout"); //對所有用戶認(rèn)證 map.put("/**", "authc"); //登錄 //shiroFilterFactoryBean.setLoginUrl("/login"); //首頁 //shiroFilterFactoryBean.setSuccessUrl("/index"); //錯(cuò)誤頁面,認(rèn)證不通過跳轉(zhuǎn) //shiroFilterFactoryBean.setUnauthorizedUrl("/error"); shiroFilterFactoryBean.setFilterChainDefinitionMap(map); return shiroFilterFactoryBean;} 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的ssm jsp跳转jsp_去掉Shiro默认login.jsp跳转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。