From 7169bef83a65355a019bd57561d196d67af0c3c2 Mon Sep 17 00:00:00 2001 From: NagoColer <404213506@qq.com> Date: Mon, 10 Apr 2023 20:39:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=AE=B0=E4=BD=8F=E6=88=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/config/SecurityConfiguration.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/study-project-backend/src/main/java/com/example/config/SecurityConfiguration.java b/study-project-backend/src/main/java/com/example/config/SecurityConfiguration.java index 7a3891f..7a6739e 100644 --- a/study-project-backend/src/main/java/com/example/config/SecurityConfiguration.java +++ b/study-project-backend/src/main/java/com/example/config/SecurityConfiguration.java @@ -16,10 +16,13 @@ import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl; +import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfigurationSource; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import javax.sql.DataSource; import java.io.IOException; @Configuration @@ -29,8 +32,12 @@ public class SecurityConfiguration { @Resource AuthorizeService authorizeService; + @Resource + DataSource dataSource; + @Bean - public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + public SecurityFilterChain filterChain(HttpSecurity http, + PersistentTokenRepository repository) throws Exception { return http .authorizeHttpRequests() .anyRequest().authenticated() @@ -44,6 +51,11 @@ public class SecurityConfiguration { .logoutUrl("/api/auth/logout") .logoutSuccessHandler(this::onAuthenticationSuccess) .and() + .rememberMe() + .rememberMeParameter("remember") + .tokenRepository(repository) + .tokenValiditySeconds(3600 * 24 * 7) + .and() .csrf() .disable() .cors() @@ -55,6 +67,14 @@ public class SecurityConfiguration { .build(); } + @Bean + public PersistentTokenRepository tokenRepository(){ + JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl(); + jdbcTokenRepository.setDataSource(dataSource); + jdbcTokenRepository.setCreateTableOnStartup(false); + return jdbcTokenRepository; + } + private CorsConfigurationSource corsConfigurationSource() { CorsConfiguration cors = new CorsConfiguration(); cors.addAllowedOriginPattern("*");