Автор оригинала: Eugen Paraschiv.
1. Обзор
Эта статья строится на вершине нашей Форма Входа учебник и собирается сосредоточиться на том, как настроить Логут с весенним .
Дальнейшее чтение:
Весенняя безопасность: аутентификация с помощью поддерживаемой базой данных Службы пользовательских днк
Введение в безопасность весеннего метода
Весенняя безопасность – Перенаправить на предыдущий URL после входа
2. Базовая конфигурация
Базовая конфигурация Весенний функциональность с помощью логоут () метод достаточно прост:
@Configuration @EnableWebSecurity public class SecSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(final HttpSecurity http) throws Exception { http //... .logout() //... } //... }
И с использованием конфигурации XML:
...
Элемент позволяет использовать механизм логотипа по умолчанию, который настроен для использования следующих logout URL : /Логот который раньше был /j_spring_security_logout до Весенняя безопасность 4 .
3. JSP и Logout ссылка
Продолжая этот простой пример, способ обеспечить логотип ссылка в веб-приложении:
4. Расширенные настройки
4.1. logoutSuccessUrl()
После успешного стим-процесса Spring Security перенаправит пользователя на указанную страницу. По умолчанию это корневая страница ( “/” ), но это настраивается:
//... .logout() .logoutSuccessUrl("/afterlogout.html") //...
Это также может быть сделано с помощью конфигурации XML:
В зависимости от приложения, хорошей практикой является перенаправление пользователя обратно на страницу входа:
//... .logout() .logoutSuccessUrl("/login.html") //...
4.2. logoutUrl()
Как и другие по умолчанию в Spring Security, URL, который на самом деле вызывает механизм logout имеет по умолчанию, а /Логот .
Это, однако, хорошая идея, чтобы изменить это значение по умолчанию, чтобы убедиться, что не публикуется информация о том, какие рамки используются для обеспечения безопасности приложения:
.logout() .logoutUrl("/perform_logout")
И через XML:
4.3. недействительнымиHttpSession и deleteCookies
Эти два расширенных атрибута контролируют недействительность сеанса, а также список файлов cookie, которые будут удалены при выходе пользователя из системы. Таким образом, недействительнымиHttpSession позволяет настроить сеанс таким образом, чтобы он не был признан недействительным при использовании логотипа (это , по умолчанию).
удалитьКуки метод прост, а также:
.logout() .logoutUrl("/perform_logout") .invalidateHttpSession(true) .deleteCookies("JSESSIONID")
И версия XML:
4.4. logoutSuccessHandler()
Для более продвинутых сценариев, где пространство имен недостаточно гибкое, ЛогоутСюкхендлер фасоль из весеннего контекста может быть заменена пользовательской ссылкой:
@Bean public LogoutSuccessHandler logoutSuccessHandler() { return new CustomLogoutSuccessHandler(); } //... .logout() .logoutSuccessHandler(logoutSuccessHandler()); //...
Эквивалентная конфигурация XML:
...
Любое логика пользовательского приложения, которая должна работать, когда пользователь успешно выходит из могут быть реализованы с пользовательскими logout успеха обработчик. Например — простой механизм аудита, отслеживая последнюю страницу, на которую был пользователь, когда он запускал logout:
public class CustomLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler implements LogoutSuccessHandler { @Autowired private AuditService auditService; @Override public void onLogoutSuccess( HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { String refererUrl = request.getHeader("Referer"); auditService.track("Logout from: " + refererUrl); super.onLogoutSuccess(request, response, authentication); } }
Кроме того, имейте в виду, что этот пользовательский боб несет ответственность за определение места назначения, к которому пользователь направляется после входа. Из-за этого, сопряжение logoutSuccessHandler атрибут с logoutSuccessUrl не будет работать, так как оба охватывают аналогичные функции.
5. Заключение
В этом примере мы начали с создания простого образца логотипа с Spring Security, а затем обсудили более продвинутые варианты.
Осуществление этой весны Logout Tutorial можно найти в проект GitHub – это проект на основе Eclipse, поэтому он должен быть легким для импорта и запуска, как она есть.
При локальном запуске проекта к примеру HTML можно получить по:
http://localhost:8080/spring-security-mvc-login/login.html