一、背景
最近在研究 shiro ,当配置完 filter 之后,发现,有时候输入网址访问工程,网页的地址栏后面会出现 jsessionid=xxxxxxxxxxxxxxx,导致我的页面不能成功的显示,在百度中查询了好多的资料,都是基于配置文件解决问题的,我想找一个基于注解的解决方式。终于还是找到了,在这块记录一下。
需要注意的是 sessionManager.setSessionIdUrlRewritingEnabled(false) 这个标签貌似不支持 shiro1.3.2以及之前的版本,我是用的是 1.6.0,这个版本是支持的。
二、解决方式
在 shiroConfig 类中重新定义 DefaultWebSessionManager ,并将其注入到 SecurityManager 中即可,如下所示:
@Bean
public DefaultWebSessionManager sessionManager() {
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
// 为了解决输入网址地址栏出现 jsessionid 的问题
sessionManager.setSessionIdUrlRewritingEnabled(false);
return sessionManager;
}
// 权限管理,配置主要是Realm的管理认证
@Bean
public SecurityManager securityManager() {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(myShiroRealm());
securityManager.setRememberMeManager(rememberMeManager());
// 将 sessionManager 注入到 SecurityManager 中,否则不会生效
securityManager.setSessionManager(sessionManager());
return securityManager;
}