2017-06-13 7 views
2

Ich habe eine Webanwendung und mein Back-End verwendet Feder Sicherheit. Ich habe es geschafft, den normalen Login zu implementieren, aber jetzt möchte ich ihn erweitern, damit sich die Benutzer nicht jedes Mal anmelden müssen, wenn der SessionID-Cookie abläuft. Ich möchte auch die Gültigkeit dieses Cookies nicht verlängern. Stattdessen möchte ich diese Wahl den Benutzern überlassen. Wer angemeldet bleiben möchte, kann dies tun und die anderen Benutzer sollten sich nach einer gewissen Zeit automatisch abmelden. Ich möchte dies mit Hilfe eines Kontrollkästchens im Login-Formular erreichen. Wie könnte dies erreicht werden? Ich schaffte es Informationen über die erinnern mich Cookie zu finden, aber zu meinem besten Verständnis dieses hat eine globale Wirkung, so dass alle Benutzer angemeldet bleibenFrühling Sicherheit "Remember Me" Kontrollkästchen

Hier mein WebConfig ist.

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.addFilterBefore(new CORSFilter(), ChannelProcessingFilter.class).authorizeRequests() 
     // ...Long series of .antMatchers... 
     .antMatchers("/login", "/getActiveUser", "/logout") 
     .permitAll() 
     .anyRequest().authenticated() 
     .and().authenticationProvider(authenticationProvider()) 
     .exceptionHandling() 
     .authenticationEntryPoint(authenticationEntryPoint) 
     .and() 
     .formLogin() 
     .loginPage("/login") 
     .permitAll() 
     .successHandler(authSuccessHandler) 
     .failureHandler(authFailureHandler) 
     .and() 
     .logout() 
     .permitAll() 
     .and() 
     .csrf().disable(); 
    http.formLogin().defaultSuccessUrl("http://localhost:8100", true); 
} 

Und meine Anwendung. Eigenschaftendatei:

spring.jpa.open-in-view=false 
spring.datasource.url=jdbc:mysql://localhost:3307/projectdb?serverTimezone=UTC 
spring.datasource.username=*** 
spring.datasource.password=*** 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.jackson.serialization.write_dates_as_timestamps=false 
server.session.cookie.max-age=600 

Vielen Dank im Voraus!

Antwort

-1

Fügen Sie die folgende Konfiguration auf das HTTP-Objekt,

http.rememberMe().key("mySecretKey").tokenValiditySeconds(86400); 

und die folgende Seite einzuloggen,

<input type="checkbox" name="remember-me" /> 
+0

könnten Sie bitte ein bisschen den Ansatz erklären? –

+0

plus Ich will keine endliche Zeit –

Verwandte Themen