Рубрики
Без рубрики

Весенняя безопасность Логот

Весенний пример Logout – как настроить logout URL, logout-succcess-url и как использовать пользовательские бобы для обработки передовых сценариев logout.

Автор оригинала: 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 ссылка

Продолжая этот простой пример, способ обеспечить логотип ссылка в веб-приложении:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

   
   
      ">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