Index: lams_central/web/WEB-INF/web.xml
===================================================================
diff -u -rbf7188dd95898df53f786a38b116214d005c8fb2 -rf4d538fe4dbd4575c45b6fc3f203ea0bde22efa4
--- lams_central/web/WEB-INF/web.xml (.../web.xml) (revision bf7188dd95898df53f786a38b116214d005c8fb2)
+++ lams_central/web/WEB-INF/web.xml (.../web.xml) (revision f4d538fe4dbd4575c45b6fc3f203ea0bde22efa4)
@@ -645,6 +645,7 @@
/css/*
/errorpages/*
+ /error.jsp
/images/*
/includes/javascript/*
/includes/font-awesome/*
Index: lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java
===================================================================
diff -u -r68d929f2345407cf503c29c3903fb0127dd3f848 -rf4d538fe4dbd4575c45b6fc3f203ea0bde22efa4
--- lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java (.../SessionManager.java) (revision 68d929f2345407cf503c29c3903fb0127dd3f848)
+++ lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java (.../SessionManager.java) (revision f4d538fe4dbd4575c45b6fc3f203ea0bde22efa4)
@@ -90,23 +90,12 @@
HttpSession existingSession = loginMapping.get(login);
// check if it's a different session and if so, which one is newer
if (existingSession != null && !existingSession.getId().equals(sessionId)) {
- if (session.getCreationTime() > existingSession.getCreationTime()) {
- try {
- // invalidate the other session
- existingSession.invalidate();
- } catch (Exception e) {
- log.warn("SessionMananger invalidation exception", e);
- // if it was already invalidated, do nothing
- }
- } else {
- try {
- // invalidate this session
- session.invalidate();
- } catch (Exception e) {
- log.warn("SessionMananger invalidation exception", e);
- // if it was already invalidated, do nothing
- }
- throw new SecurityException("You were logged out");
+ try {
+ // invalidate the other session
+ existingSession.invalidate();
+ } catch (Exception e) {
+ log.warn("SessionMananger invalidation exception", e);
+ // if it was already invalidated, do nothing
}
}
loginMapping.put(login, session);
Index: lams_common/src/java/org/lamsfoundation/lams/web/session/SystemSessionFilter.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rf4d538fe4dbd4575c45b6fc3f203ea0bde22efa4
--- lams_common/src/java/org/lamsfoundation/lams/web/session/SystemSessionFilter.java (.../SystemSessionFilter.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_common/src/java/org/lamsfoundation/lams/web/session/SystemSessionFilter.java (.../SystemSessionFilter.java) (revision f4d538fe4dbd4575c45b6fc3f203ea0bde22efa4)
@@ -41,6 +41,9 @@
* @author Steve.Ni
*/
public class SystemSessionFilter implements Filter {
+
+ private static final String CONTEXT_ERROR_PAGE = "/error.jsp";
+
@Override
public void init(FilterConfig config) throws ServletException {
}
@@ -54,7 +57,15 @@
return;
}
- SessionManager.startSession((HttpServletRequest) request);
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ String requestURI = httpRequest.getRequestURI();
+ if (requestURI.endsWith(CONTEXT_ERROR_PAGE)) {
+ // do not create a session for displaying error page
+ chain.doFilter(request, response);
+ return;
+ }
+
+ SessionManager.startSession(httpRequest);
// do following part of chain
chain.doFilter(request, response);
SessionManager.endSession();