fixup! Prevent session already invalidated error when logging in with different users simultaneously
parent
8718f61b3d
commit
925e94ed7e
|
|
@ -11,6 +11,7 @@
|
|||
*/
|
||||
package org.eclipse.che.multiuser.api.authentication.commons.filter;
|
||||
|
||||
import static java.lang.String.format;
|
||||
import static org.eclipse.che.multiuser.api.authentication.commons.Constants.CHE_SUBJECT_ATTRIBUTE;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
@ -28,6 +29,8 @@ import org.eclipse.che.commons.subject.Subject;
|
|||
import org.eclipse.che.multiuser.api.authentication.commons.SessionStore;
|
||||
import org.eclipse.che.multiuser.api.authentication.commons.SubjectHttpRequestWrapper;
|
||||
import org.eclipse.che.multiuser.api.authentication.commons.token.RequestTokenExtractor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Performs basic environment initialization actions as follows:
|
||||
|
|
@ -44,6 +47,9 @@ import org.eclipse.che.multiuser.api.authentication.commons.token.RequestTokenEx
|
|||
*/
|
||||
public abstract class MultiUserEnvironmentInitializationFilter implements Filter {
|
||||
|
||||
private static final Logger LOG =
|
||||
LoggerFactory.getLogger(MultiUserEnvironmentInitializationFilter.class);
|
||||
|
||||
private final SessionStore sessionStore;
|
||||
private final RequestTokenExtractor tokenExtractor;
|
||||
|
||||
|
|
@ -119,6 +125,10 @@ public abstract class MultiUserEnvironmentInitializationFilter implements Filter
|
|||
sessionSubject = extractSubject(token);
|
||||
session.setAttribute(CHE_SUBJECT_ATTRIBUTE, sessionSubject);
|
||||
} else if (!sessionSubject.getUserId().equals(userId)) {
|
||||
LOG.debug(
|
||||
format(
|
||||
"Invalidating session with mismatched user IDs: old was %s, new is %s.",
|
||||
sessionSubject.getUserId(), userId));
|
||||
session.invalidate();
|
||||
HttpSession new_session = httpRequest.getSession(true);
|
||||
sessionSubject = extractSubject(token);
|
||||
|
|
|
|||
Loading…
Reference in New Issue