shiro sessioin 集群后出现There is no session with id 原因

通过网上资料集成 shiro-redis.rar ;官网  https://github.com/alexxiyang/shiro-redis

集群环境:spring mvc + mybatis + shiro + redis 

出现如下问题的原因之一是:

1、在l通过shiro的 subject.logout() 进行登出loginout之后  通过spring的  return "redirect:/ ";  方式跳转到其他的controller中,根据逻辑 会在跳转之前讲回话的session删除,但是在跳转的过程中会将之前的session传递到后续的过滤器中,从而在shiro中获取不到对应的session;

跳转jsp页面也会出现相同的问题。因为jsp页面会产生获取session。

解决办法,分步操作,通过ajax请求进行登出操作,然后通过js进行页面跳转。

org.apache.shiro.session.UnknownSessionException: There is no session with id [57b4c326-7c91-43ef-917e-1162f389a0a4]
    at org.apache.shiro.session.mgt.eis.AbstractSessionDAO.readSession(AbstractSessionDAO.java:170)
    at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSessionFromDataSource(DefaultSessionManager.java:236)
    at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSession(DefaultSessionManager.java:222)
    at org.apache.shiro.session.mgt.AbstractValidatingSessionManager.doGetSession(AbstractValidatingSessionManager.java:118)
    at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupSession(AbstractNativeSessionManager.java:108)
    at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupRequiredSession(AbstractNativeSessionManager.java:112)
    at org.apache.shiro.session.mgt.AbstractNativeSessionManager.getAttribute(AbstractNativeSessionManager.java:209)
    at org.apache.shiro.session.mgt.DelegatingSession.getAttribute(DelegatingSession.java:141)
    at org.apache.shiro.session.ProxiedSession.getAttribute(ProxiedSession.java:121)
    at org.apache.shiro.web.servlet.ShiroHttpSession.getAttribute(ShiroHttpSession.java:131)
    at org.springframework.web.util.WebUtils.getSessionAttribute(WebUtils.java:303)
    at org.springframework.web.servlet.i18n.SessionLocaleResolver.resolveLocale(SessionLocaleResolver.java:84)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1217)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

 

转载于:https://my.oschina.net/u/437964/blog/681646

你可能感兴趣的:(shiro sessioin 集群后出现There is no session with id 原因)