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!
könnten Sie bitte ein bisschen den Ansatz erklären? –
plus Ich will keine endliche Zeit –