복붙노트

[SPRING] Spring 보안 이동 Java Config에는 authentication-success-handler-ref는 어디로 이동합니까?

SPRING

Spring 보안 이동 Java Config에는 authentication-success-handler-ref는 어디로 이동합니까?

우리의 응용 프로그램은 성공적인 로그인을위한 사용자 정의 성공 처리기가 있습니다. 기본적으로 세션이 만료되었을 때 페이지에 리디렉션됩니다.

우리는 spring xml 설정 대신 Java 설정으로 이동 중입니다. 나머지 설정은 매우 원활하게 진행되었지만 security : form-login 태그의 authentication-success-handler-ref 속성을 어디에 둘 수 있는지 찾을 수 없습니다.

<security:http auto-config='true'>
  ...
  <security:intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY"/>
  <security:form-login login-page="/login" default-target-url="/sites"
                     authentication-failure-url="/login"
                     authentication-success-handler-ref="authenticationSuccessHandler"/>
 ...

지금까지 우리의 설정이 있습니다.

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
       .authorizeRequests()
          .anyRequest().authenticated()
          .and()
        .formLogin()
          .loginPage("/login")
          .failureUrl("/login")
          .and()
        .logout()
          .permitAll()
          .and()
  }

또한 default-target-url을 어디에 넣을 지 찾을 수 없지만 그다지 중요하지 않습니다.

주의 할 점은 실제로 Groovy를 사용하고 있지만 코드는 기본적으로 Java 구성과 동일합니다.

해결법

  1. ==============================

    1.모든 설정은 전역 configure 메소드 내에서 수행 할 수 있습니다. 다음을 추가하십시오.

    모든 설정은 전역 configure 메소드 내에서 수행 할 수 있습니다. 다음을 추가하십시오.

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
              .anyRequest().authenticated()
              .and()
            .formLogin()
              .loginPage("/login")
              .defaultSuccessUrl("/sites")
              .failureUrl("/login")
              .successHandler(yourSuccessHandlerBean) // autowired or defined below
              .and()
            .logout()
              .permitAll()
              .and()
      }
    
  2. ==============================

    2.SimpleUrlAuthenticationSuccessHandler 또는 SavedRequestAwareAuthenticationSuccessHandler를 확장하는 bean을 만들어야합니다. 예 :

    SimpleUrlAuthenticationSuccessHandler 또는 SavedRequestAwareAuthenticationSuccessHandler를 확장하는 bean을 만들어야합니다. 예 :

    @Bean
    public SavedRequestAwareAuthenticationSuccessHandler successHandler() {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("/secure/");
        return successHandler;
    }
    

    그런 다음 AbstractAuthenticationProcessingFilter를 확장하는 Bean에 설정해야합니다.

    UsernamePasswordAuthenticationFilter authenticationFilter = new UsernamePasswordAuthenticationFilter();
    authenticationFilter.setAuthenticationSuccessHandler(successHandler());
    
  3. from https://stackoverflow.com/questions/21097528/moving-spring-security-to-java-config-where-does-authentication-success-handler by cc-by-sa and MIT license