Springsecurity-Remember me(四)

实现Remember me功能;
请添加图片描述

1、创建临时登录的数据库

  CREATE TABLE `persistent_logins` (                     
 `username` VARCHAR(64) NOT NULL,
 `series` VARCHAR(64) NOT NULL,
 `token` VARCHAR(64) NOT NULL,
 `last_used` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
 PRIMARY KEY (`series`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

2、进行配置,首先需要配置数据源,在之前整合Mybatisplus已经配置了数据源,所以这边只需要进行注入。还需要注入操作数据库的方式,这边采用的是JdbcTokenRepositoryImpl;

@Autowired
    private DataSource dataSource;

    @Autowired
    private PersistentTokenRepository tokenRepository;

    @Bean
    public PersistentTokenRepository persistentTokenRepository(){
        JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
    // 赋值数据源
            jdbcTokenRepository.setDataSource(dataSource);
    // 自动创建表,第一次执行会创建,以后要执行就要删除掉!
//            jdbcTokenRepository.setCreateTableOnStartup(true);
            return jdbcTokenRepository;
    }

3、配置remember-on生效,设置cookie时长,以及二次登录成功直接使用userDetailsService进行登录;

@Override
    protected void configure(HttpSecurity http) throws Exception {

        http.exceptionHandling().accessDeniedPage("/unauth.html");
        // 配置认证
        http.formLogin() //自定义自己编写的登录页面
                .loginPage("/login.html") // 配置哪个 url 为登录页面
                .loginProcessingUrl("/user/login") // 登录访问路径。
               .defaultSuccessUrl("/success.html").permitAll()//登陆成功之后跳转地址
        .and().authorizeRequests()
//                .antMatchers("/","/test/hello","/user/login").permitAll()
//                .antMatchers("/test/index").hasAuthority("admin")
//                .antMatchers("/test/index").hasAnyAuthority("admin,manager")
//                .antMatchers("/test/index").hasRole("sale1")
                .anyRequest().authenticated()
                .and().rememberMe().tokenRepository(tokenRepository)
                .tokenValiditySeconds(6000)
                .userDetailsService(userDetailsService)
                .and().csrf().disable();// 关闭 csrf保护功能
    } 

4、如果出现以下的错误,很有可能是配置出错了

org.springframework.beans.factory.BeanCreationException: Error
creating bean with name ‘springSecurityFilterChain’ defined in class path resource
[org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]:

5、登录进行测试,这时候是无法成功的,观察浏览器没有发现remember me的cookie;原因是没有在前端进行设置
在这里插入图片描述
6、在表单中添加复选框,重新测试,可以看到remember me以及可以重复登录。

记住我:<input type="checkbox"name="remember-me"title="记住密码"/><br/

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值