美文网首页
Spring Security RememberMe

Spring Security RememberMe

作者: 司鑫 | 来源:发表于2018-09-24 20:42 被阅读44次

基本原理


rememberMe 流程
  • 当用户首次发送 login request 时, 会先经过UsernamePasswordAuthenticationFilter 进行校验,校验通过后会自动调用RememberMeService 将 Token 保存进数据库,同时将 Token 返回写入到浏览器 cookie 中
  • 在token未失效再次登录时,request中携带有token发送request时会直接读取到对应的token和username,然后根据username获取到用户的信息
filter chains

UsernamePasswordAuthentication and BasicAthenticationFilter 无法校验时,RememberMeAuthenticationFilter 会进行校验请求中是否携带有 token,并进行下一步操作。

实现


@Configuration

public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private DataSource dataSource;
    @Autowired
    private CustomUserDetailsService customUserDetailsService;

   @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.rememberMe()
                .tokenRepository(persistentTokenRepository()) // 获取token
                .tokenValiditySeconds(3600)//token有效期
                .userDetailsService(customUserDetailsService); // 根据token拿到username后,从哪获取到用户信息
   }
    @Bean
    public PersistentTokenRepository persistentTokenRepository() {
        JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl();
        tokenRepository.setDataSource(dataSource);
        tokenRepository.setCreateTableOnStartup(true);//在启动时,自动创建 token 表,或者自行执行SQL语句(create table persistent_logins (username varchar(64) not null, series varchar(64) primary key, "
            + "token varchar(64) not null, last_used timestamp not null)
        return tokenRepository;
     } 
}

相关文章

网友评论

      本文标题:Spring Security RememberMe

      本文链接:https://www.haomeiwen.com/subject/ovehoftx.html