RememberMe功能

rememberMeServices接口

有AbstractRememberMeServices抽象类

  1. PersistentTokenBasedRememberMeServices实现类
  2. TokenBasedRememberMeServices

通过授权验证登录成功,到那时表单添加rememberme功能后,表单数据提交多了一项数据,loginsuccess判断值为true或者false,true会调用onLoginsuccess方法进行持久化存储

持久化存储有两种情况:

  1. 内存
  2. 数据库

内存PersistentTokenRepository接口的实现InMemoryTokenRepositoryImpl

数据库JdbcTokenRepositoryImpl实现进行持久化存储

Spring使用

<security:http auto-config="true" use-expressions="true">
<security:intercept-url pattern="/**" access="hasAnyRole('ROLE_ADMIN')"></security:intercept-url>
<security:form-login login-processing-url="/index"></security:form-login>
//rememberme功能添加,user-service自定义的userDetail的类的javaBean 后面就是数据库的javaBean
<security:remember-me user-service-ref="userDetail" data-source-ref="dataSource"></security:remember-me>
</security:http> <security:authentication-manager>
<security:authentication-provider user-service-ref="userDetail">
</security:authentication-provider>
</security:authentication-manager>

直接起飞,但是需要在数据库中创建一个表

create table PERSISTENT_LOGINS  (
USERNAME VARCHAR2(64),
SERIES VARCHAR2(64) not null,
TOKEN VARCHAR2(64),
LAST_USED TIMESTAMP,
constraint PK_PERSISTENT_LOGINS primary key (SERIES)
);

SpringBoot使用

@EnableWebSecurity
@Configuration
public class Security extends WebSecurityConfigurerAdapter {
@Autowired
private SecuritySer ss; @Autowired
private DataSource ds; @Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/**")
.hasAnyRole("ADMIN")
.anyRequest()
.permitAll()
.and()
.formLogin()
.permitAll()
.and()
.rememberMe()
.tokenRepository(setJdbc())
.tokenValiditySeconds(10000);
} // 需要一个JdbcTokenRepositoryImpl对象,默认是使用的内存RememberMe实现,通过配置类切换即可 @Bean
public JdbcTokenRepositoryImpl setJdbc(){
JdbcTokenRepositoryImpl setToken = new JdbcTokenRepositoryImpl();
setToken.setDataSource(ds);
return setToken;
} @Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(ss);
}
}

以上仅为个人总结,如有不足或错误,请指正谢谢!

Security篇:RememberMe的更多相关文章

  1. Spring Security 之 Remember-Me (记住我)

    效果:在用户的session(会话)过期或者浏览器关闭后,应用程序仍能记住它.用户可选择是否被记住.(在登录界面选择)   “记住”是什么意思?     就是下次你再访问的时候,直接进入系统,而不需要 ...

  2. Spring Security教程(七):RememberMe功能

    在之前的教程中一笔带过式的讲了下RememberMe记住密码的功能,那篇的Remember功能是最简易的配置,其功能和安全性都不强.这里就配置下security中RememberMe的各种方式. 一. ...

  3. Spring Security(12)——Remember-Me功能

    目录 1.1     概述 1.2     基于简单加密token的方法 1.3     基于持久化token的方法 1.4     Remember-Me相关接口和实现类 1.4.1    Toke ...

  4. [转]Spring Security学习总结一

    [总结-含源码]Spring Security学习总结一(补命名空间配置) Posted on 2008-08-20 10:25 tangtb 阅读(43111) 评论(27)  编辑  收藏 所属分 ...

  5. Spring boot+Spring Security 4配置整合实例

    本例所覆盖的内容: 1. 使用Spring Security管理用户身份认证.登录退出 2. 用户密码加密及验证 3. 采用数据库的方式实现Spring Security的remember-me功能 ...

  6. spring security 图解过滤器的使用

    1. HttpSessionContextIntegrationFilter 位于过滤器顶端,第一个起作用的过滤器. 用途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个Sec ...

  7. Remember-Me功能

    Remember-Me功能 目录 1.1概述 1.2基于简单加密token的方法 1.3基于持久化token的方法 1.4Remember-Me相关接口和实现类 1.4.1TokenBasedReme ...

  8. springsecurity4+springboot 实现remember-me 发现springsecurity 的BUG

    前言:现在开发中,记住我这个功能是普遍的,用户不可能每次登录都要输入用户名密码.昨天准备用spring security的记住我功能,各种坑啊,吐血 . 先看下具体实现吧. spring securi ...

  9. Spring Security 入门详解(转)

    1.Spring Security介绍 Spring Security是基于spring的应用程序提供声明式安全保护的安全性框架,它提供了完整的安全性解决方案,能够在web请求级别和方法调用级别 处理 ...

随机推荐

  1. SQL语句的学习

    SQL语句的学习 要交作业了,刚好把SQL查询语句的内容写成笔记,以后好查看.水一下 单表查询 DISTINCT:去掉结果中的重复行作用,将DISTINCT关键字放在select的后面.目标列名的前面 ...

  2. Poem Codes - 攻防世界(Decrypt-the-Message)

    Poem Codes Poem Code 最显著的特点就是一首诗歌. 详情请戳这里 让我们一起来过滤一遍这个神奇的加密过程~ ① 给出一首诗歌 for my purpose holds to sail ...

  3. python 工业日志模块 未来的python日志最佳实践

    目录 介绍 好的功能 安装方法 参数介绍 呆log 参数与 使用方法 版本说明 后期版本规划 todo 感谢 介绍 呆log:工业中,python日志模块,安装即用.理论上支持 python2, py ...

  4. input[type=file] 样式美化,input上传按钮美化

    <style>.file { position: relative; display: inline-block; background: #D0EEFF; border: 1px sol ...

  5. Windows10通过NFS挂载linux目录

    大致分为以下三大步骤: 一.启动NFS服务器 二.启动NFS客户端 三.挂载NFS目录 工具: win10.虚拟机Ubuntu18.0系统 一. 启动linux的NFS服务端: 以下均为Ubuntu操 ...

  6. C语言讲义——字符串

    字符数组 C语言字符串就是字符数组. 单写字符,用单引号.如:'A'. 字符串用双引号.如:"A"."ABC". #include <stdio.h> ...

  7. 【译】用 React 和 D3 创建图表

    本文翻译自:https://dzone.com/articles/charts-with-modern-react-and-d3 本文将介绍如何利用 D3JS 和 ReactJS 来创建基础图表. R ...

  8. mysql主从同步上---主从同步原理

    1.主从同步机制   1.1 主从同步介绍和优点   在多台数据服务器中,分为主服务器和从服务器.一台主服务器对应多台从服务器. 主服务器只负责写入数据,从服务器只负责同步主服务器的数据,并让外部程序 ...

  9. 天池新闻推荐比赛1:赛题理解+baseline

    天池新闻推荐比赛1:赛题理解+baseline 一.比赛信息 比赛链接: ​ https://tianchi.aliyun.com/competition/entrance/531842/inform ...

  10. 20190705_关于winform程序修改程序名后, 报未将对象引用设置到对象的实例

    winform做了一个小项目, 其中要用到数据库连接, 字符串, private string ConnStringSource = System.Configuration.Configuratio ...