ssm整合shiro登录验证异常
- 问题:ssm整合shiro做安全认证,确认账号密码无误,在火狐与IE浏览器登录后可正常点击跳转页面,在谷歌浏览器登录后点击链接跳转需重新登录
- 原因:shiro后端字段的cookie名称为JSESSIONID,在某些情况下可能会被容器修改,导致登录验证无效
- 解决方法:自定义SessionManager类继承DefaultWebSessionManager类,修改shiro自带的cookie名称,之后在shiro的配置文件中将SessionManager类注入给shiro使用
public SessionManager() {
Cookie cookie = new SimpleCookie("MYSESSIONID");
cookie.setHttpOnly(true);
this.sessionIdCookie = cookie;
this.sessionIdCookieEnabled = true;
this.sessionIdUrlRewritingEnabled = true;
}
- applicationContext-shrio.xml配置文件
<!--配置sessionManager-->
<bean id="sessionManager"
class="com.xxx.shiro.SessionManager">
<!--设置session超时时间-->
<property name="globalSessionTimeout" value="9000000"></property>
<!--设置删除无效session-->
<property name="deleteInvalidSessions" value="true"/>
</bean>