爆破专栏丨Spring Security系列教程之基于持久化令牌方案实现自动登录_spring security账户登录暴破

本文介绍了Spring Security如何实现基于持久化令牌的自动登录功能。通过配置HttpSecurity,关联JdbcTokenRepositoryImpl,配置application.yml连接数据库,并创建persistent_logins表。在用户登录时,系统生成并存储持久化令牌。接着,文章详细解析了PersistentRememberMeToken令牌类、PersistentTokenRepository接口及其JdbcTokenRepositoryImpl实现,以及PersistentTokenBasedRememberMeServices类的关键方法。
摘要由CSDN通过智能技术生成

请按之前的方式创建一个新的项目module,具体过程略。

首先我们创建SucurityConfig配置类,在configure(HttpSecurity http)方法中通过tokenRepository()方法关联JdbcTokenRepositoryImpl,进而对persistent_logins表进行增删改查。

@EnableWebSecurity(debug = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Value("${spring.security.remember-me.key}")
    private String rememberKey;

    @Autowired
    private DataSource dataSource;

    @Autowired
    private UserDetailsService userDetailsService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //配置数据源
        JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl();
        tokenRepository.setDataSource(dataSource);

        http.authorizeRequests()
                .antMatchers("/admin/**")
                .hasRole("ADMIN")
                .antMatchers("/user/**")
                .hasRole("USER")
                .antMatchers("/app/**")
                .permitAll()
                .anyRequest()
                .authenticated()
                .and()
                .formLogin()
                .permitAll()
                .and()
                //开启记住我功能
                .rememberMe()
                .userDetailsService(userDetailsService)
                //1.设置加密的key
                .key(rememberKey)
                //2.持久化令牌方案
                .tokenRepository(tokenRepository)
                //设置令牌有效期,为7天有效期
                .tokenValiditySeconds(60 * 60 * 24 * 7)
                .and()
                .csrf()
                .disable();
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return NoOpPasswordEncoder.getInstance();
    }
    
}


3. 配置application.yml文件

创建applicaiton.yml文件并在其中关联配置自己的数据库,我是在该数据库中创建了persistent_logins表。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db-security?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
    username: root
    password: syc
  security:
    remember-me:
      key: yyg


4. 启
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值