Caused by: org.apache.shiro.session.UnknownSessionException: There is no session with id [55759cea-7274-4931-9c3e-bceb32ac297e] at org.apache.shiro.session.mgt.eis.AbstractSessionDAO.readSession(AbstractSessionDAO.java:170) ~[shiro-core-1.7.1.jar:1.7.1]
通过API登录有时会报错【先登录一次,登录第二次就会报错,应该是把cookie带过去了】,比较奇怪,出现在
session.setAttribute(CmsUtils.SESSION_CONSOLE_USER,cmsUser);
检查java代码:
/** * Retrieves the Session object from the underlying EIS identified by <tt>sessionId</tt> by delegating to * the {@link #doReadSession(java.io.Serializable)} method. If {@code null} is returned from that method, an * {@link UnknownSessionException} will be thrown. * * @param sessionId the id of the session to retrieve from the EIS. * @return the session identified by <tt>sessionId</tt> in the EIS. * @throws UnknownSessionException if the id specified does not correspond to any session in the EIS. */ public Session readSession(Serializable sessionId) throws UnknownSessionException { Session s = doReadSession(sessionId); if (s == null) { throw new UnknownSessionException("There is no session with id [" + sessionId + "]"); } return s; }
MemorySessionDAO的:
protected Session doReadSession(Serializable sessionId) { return sessions.get(sessionId); }
发现调用了N多次这个方法,可能还是使用Shiro的环节出现了问题。
修改login的代码,每次登录都重新构造subject,解决该问题,原因待查:
Subject subject = null;//SecurityUtils.getSubject(); if (subject == null) { subject = (new Subject.Builder()).buildSubject(); ThreadContext.bind(subject); }
原文:https://www.cnblogs.com/webjlwang/p/14848602.html