解決Shiro第一次重定向url帶有jsessionid導致400錯誤


在Shiro進行第一次重定向時,會在url后攜帶jsessionid,這會導致400錯誤(無法找到該網頁)。
原因在於ShiroHttpServletResponse配置類的doIsEncodeable當中,會將url自動拼接jsessionid。

解決辦法:

  1. 在Shiro的配置類中的sessionManager()方法中,將sessionIdUrlRewritingEnabled屬性設置為false。該方法返回一個DefaultWebSessionManager實例。
  2. 將上面方法返回的實例設置為DefaultWebSecurityManager實例的sessionManager。

代碼如下:

@Bean
public SecurityManager securityManager() {
	DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
	securityManager.setSessionManager(sessionManager());
	securityManager.setRealm(myShiroRealm());
	//將cookie管理器交給SecurityManager進行管理
	securityManager.setRememberMeManager(rememberMeManager());
	return securityManager;
}

@Bean
public DefaultWebSessionManager sessionManager() {
	DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
	sessionManager.setSessionIdUrlRewritingEnabled(false);
	return sessionManager;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM