java - Spring 安全 "Remember Me"复选框

标签 java spring cookies authentication spring-security

我有一个 Web 应用程序,我的后端使用 spring security。我设法实现了正常登录,但现在我想扩展它,以便用户不必在每次 sessionid cookie 过期时都登录。我也不希望延长上述 cookie 的有效期。相反,我想把这个选择留给用户。想保持登录状态的用户可以这样做,其他用户应在一定时间后自动注销。我想借助登录表单中的复选框来实现这一点。这是如何实现的?我设法找到了关于记住我 cookie 的信息,但据我所知,这具有全局影响,使所有用户都保持登录状态。

这是我的网络配置:

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

还有我的 application.properties 文件:

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

提前致谢!

最佳答案

将以下配置添加到http对象,

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

和下面的登录页面,

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

关于java - Spring 安全 "Remember Me"复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44524388/

相关文章:

Java Mail 不发送电子邮件

java - LibGDX 项目可以在 Sublime Text 3 中运行吗?

java - ApplicationScope 类每次 Jersey 2.0 都会创建新实例

javascript - 无限 jQuery cookie

batch-file - 如何使用 bat 脚本删除 Internet Explorer cookie?

java - javax.jms.* 类的正确 Maven 依赖项是什么?

java - 如何从 4 个 Excel 工作表中用 Java 数据创建单个数据库表?

spring - CompletableFuture 是否在重新抛出异常时完成?

java - 指定每个 Controller 使用哪个 ViewResolver?

ios - 在 UIWebView 中不断丢失 php session cookie