management cookie java spring spring-mvc spring-security

java - cookie - spring security session timeout config



Moviendo Spring Security a Java Config, ¿a dónde va la autenticación-éxito-manejador-ref? (2)

Nuestra aplicación tiene un controlador de éxito personalizado para inicios de sesión exitosos. Básicamente, los redirige a la página en la que estaban cuando expiró su sesión.

Nos estamos moviendo a una configuración de Java en lugar de una configuración xml de primavera. El resto de la configuración se realizó sin problemas, pero no podemos encontrar dónde colocar el atributo de autenticación-éxito-controlador-ref de la seguridad: etiqueta de inicio de sesión de formulario.

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

Aquí está nuestra configuración, hasta ahora.

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

Además, no podemos encontrar dónde colocar la URL de destino predeterminada, pero eso definitivamente es menos importante.

Advertencia, en realidad estamos usando Groovy, pero el código es básicamente el mismo que una configuración de Java.


Tiene que crear el bean extendiendo SimpleUrlAuthenticationSuccessHandler o SavedRequestAwareAuthenticationSuccessHandler . Por ejemplo:

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

Luego debe configurarlo en el bean extendiendo AbstractAuthenticationProcessingFilter :

UsernamePasswordAuthenticationFilter authenticationFilter = new UsernamePasswordAuthenticationFilter(); authenticationFilter.setAuthenticationSuccessHandler(successHandler());


Todos los ajustes se pueden hacer dentro del método de configuración global. Agregue lo siguiente:

@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() }