Я работаю над веб-приложением, созданным с использованием Spring Framework. Я получаю ошибку Invalid CSRF Token
. Я вижу это поведение только в браузере Chrome. Ниже Выполняемые:Недопустимый токен CSRF - ошибка в браузере Chrome
- Войти в приложение, обеспечивая имя пользователя и пароль
- Нажмите на кнопку Выход, чтобы выйти из системы. Пользователь будет перенаправлен на страницу входа в систему
- Затем на странице входа снова попробуйте войти в систему. Я получаю ошибку ниже
Invalid CSRF Token 'd82dfa89-81b1-449e-9ef5-cdd32957e7f3' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
конфигурации Spring безопасности:
http.
addFilter(headerAdminFilter).
authorizeRequests().
regexMatchers("/login.*").permitAll().
regexMatchers("/api.*").fullyAuthenticated().
regexMatchers("/jolokia.*").hasRole(ADMINISTRATOR).
regexMatchers("/appadmin.*").hasRole(ADMINISTRATOR).
regexMatchers(".*").fullyAuthenticated().
and().
formLogin().loginPage("/login").successHandler(new RedirectingAuthenticationSuccessHandler()).
and().
exceptionHandling().authenticationEntryPoint(new RestAwareAuthenticationEntryPoint("/login"));
HTML код кнопки Выход:
<a id="logout-button" ng-click="ac.logout()" href="/login">Log Out</a>
AngularJS код функции выхода из системы:
this.logout = function() {
$http.post("/logout");
}
Проблема заключается в том, что при повторном входе в систему страница входа в форму использует тот же токен csrf, который был создан ранее, вместо создания нового токена. Старый токен становится недействительным, когда вы выполнили выход из системы. –
Я проверил токен 'csrf' до и после выхода из системы. Они разные. Только странная вещь, которую я наблюдал, до отображения страницы входа в систему, перенаправляется на другой URL-адрес, а затем отображает страницу входа. Не уверен, что это вызывает проблему. – Mithun