美文网首页
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