第一次访问项目,shiro报no session错误,异常如下:
org.apache.shiro.session.UnknownSessionException: There is no session with id [de08201c-fa60-4619-b5ab-477f05f8c50d]
原因:shiro中的Cookie默认名称是JSESSIONID,而servlet容器也是JSESSIONID,导致冲突,因此需改变shiro中的Cookie中的名称,代码如下:
@Configuration
public class ShiroConfig {
@Bean("sessionManager")
public SessionManager sessionManager(ShiroSessionDao shiroSessionDa){
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
sessionManager.setGlobalSessionTimeout(60 * 60 * 1000);
sessionManager.setSessionValidationSchedulerEnabled(true);
sessionManager.setSessionIdUrlRewritingEnabled(false);
sessionManager.setSessionDAO(shiroSessionDao);
/** 此注释代码 就是将JSESSIONID变成自定义名称 WEBJSESSIONID
sessionManager.setSessionIdCookieEnabled(true);
SimpleCookie cookie = new SimpleCookie("WEBJSESSIONID");
cookie.setHttpOnly(true);
cookie.setMaxAge(60 * 60 * 1000);
sessionManager.setSessionIdCookie(cookie); **/
return sessionManager;
}
网友评论