По истечении времени сеанса для перехода на страницу входа требуется двойной щелчок.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 По истечении времени сеанса для перехода на страницу входа требуется двойной щелчок.

Сообщение Anonymous »

Я использую этот код. После установки пароляChanged, когда я нажимаю (первый запрос), он делает недействительным сеанс в аутентификацииServices.logout(getHttpServletRequest()), и при следующем запросе он переходит на страницу входа (мне нужно удвоить нажмите, чтобы перейти на страницу входа). Я хочу перейти на страницу входа в систему, когда впервые нажимаю запрос после аннулирования сеанса.
public class LogOutAfterChangePasswordInterceptor extends BaseInterceptor {
private static final long serialVersionUID = 5906534052815899264L;
private static final Logger LOG =
LoggerFactory.getLogger(LogOutAfterChangePasswordInterceptor.class);
private static final String ACTIONS_TO_REMEMBER = "static-password-setting-result";
private static final String PASSWORD_CHANGED_FLAG = "passwordChanged";
public static final String LOGIN = "login";
@Inject
private AuthenticationServices authenticationServices;

@Override
public String intercept (ActionInvocation invocation) throws Exception {

invocation.addPreResultListener((actionInvocation, resultCode) -> {
HttpServletRequest request = getHttpServletRequest();

HttpSession session = request.getSession(false);

if (getActionName().contains(ACTIONS_TO_REMEMBER)) {
LOG.trace("push URL `{}` that user after that should be logout ",
ACTIONS_TO_REMEMBER);
session.setAttribute(PASSWORD_CHANGED_FLAG, true);
} else {
Boolean passwordChanged = session != null ? (Boolean)
session.getAttribute(PASSWORD_CHANGED_FLAG) : null;
if (passwordChanged != null && passwordChanged) {
// Perform logout or other necessary actions
session.removeAttribute(PASSWORD_CHANGED_FLAG);
LOG.trace("User will be logged out after the next request");
try {
authenticationServices.logout(getHttpServletRequest());
} catch (ClientException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// logout spring manually
Authentication auth =
SecurityContextHolder.getContext().getAuthentication();
if (auth != null) {
new
SecurityContextLogoutHandler().logout(getHttpServletRequest(),
getHttpServletResponse(),auth);
}
SecurityContextHolder.getContext().setAuthentication(null);
}
}
});

return invocation.invoke();
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... login-page
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»