zoukankan      html  css  js  c++  java
  • springsecurity 记住我

    原理分析

    1、用户登录通过UsernamePasswordAuthenticationFilter认证请求处理,

    2、通过RememberMeServices对象中的onLoginSuccess方法完成登录成功后的处理,

      2.1、TokenRepository对象生成token字符

      2.2、RememberMeServices对象的addCookie方法将生成的token字符串存储到Cookie中

      2.3、token字符串存储到数据库中

    3、用户再次访问

    4、RememberMeAuthenticationFilter过滤器中读取Cookie中的Token字符串

    5、判断读取的Token字符串和数据库中的存储数据是否一致,并且返回UserDetailsService

    用法

    cookie读写RememberMeAuthenticationFilter过滤器已经完成,现在就缺少数据库存储,数据库相关的就需要配置数据源

    1、创建表

    CREATE TABLE persistent_logins (username VARCHAR(64) NOT NULL, 
    series VARCHAR(64) PRIMARY KEY,
    token VARCHAR(64) NOT NULL, 
    last_used TIMESTAMP NOT NULL)

    2、配置操作数据库表,在SecurityConfig配置类

        @Autowired
        DataSource dataSource;
    
        public PersistentTokenRepository persistentTokenRepository(){
            JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
            jdbcTokenRepository.setDataSource(dataSource);
            //jdbcTokenRepository.setCreateTableOnStartup(true); //自动创建token相关数据表
            return jdbcTokenRepository;
        }

    3、配置记住我

        //授权:针对url的设置
        @Override
        protected void configure(HttpSecurity http) throws Exception {
                    http.authorizeRequests().anyRequest().authenticated().
                            and().
                            formLogin()
                            .and()
    
                            .rememberMe()
                            .tokenRepository(persistentTokenRepository())
                            .tokenValiditySeconds(60)//设置有效时长,单位:秒
                            .userDetailsService(userDetailsServiceImpl)
    .and() .csrf().disable(); }

    4、画面设计

    注意:自定义登录页面时【记住我】的组件name属性值是remember-me,通过rememberMeParameter修改默认值

    <input type="checkbox" name="remember-me"/>
  • 相关阅读:
    Mysql自定义函数总结
    MySQL的基本函数
    Mysql存储过程总结
    Mysql触发器总结
    Mysql索引总结(二)
    Mysql索引总结(一)
    Mysql游标使用
    别人的博客,留待后看
    mysql外键约束总结
    mysql视图总结
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15138526.html
Copyright © 2011-2022 走看看