zoukankan      html  css  js  c++  java
  • SpringSecurity-RememberMeAuthenticationFilter的作用

      启用remember-me功能,在配置文件中的http节点下添加:

    1 <remember-me
    2             remember-me-parameter="remember-me"  
    3             remember-me-cookie="remember-me"  
    4             token-validity-seconds="86400"  
    5             data-source-ref="dataSource"/>

    这里可以设置表单中的checkbox对应name属性,cookie名称,已经失效时间。在数据库持久化cookie的,还要设置dataSource.

      RememberMeAuthenticationFilter和UsernamePasswordAuthenticationFilter的作用和运行过程几乎一致,唯一大的区别就是这里是从数据库中取到cookie信息,并与客户端传到到服务端的cookie信息对照,如果匹配成功,直接生成有效的Authentication放到SecurityContextHolder中。

      springSecurity默认的查询代码是:

    /** The default SQL used by the <tt>getTokenBySeries</tt> query */
        public static final String DEF_TOKEN_BY_SERIES_SQL = "select username,series,token,last_used from persistent_logins where series = ?";

      也就是说启用rememberme功能需要在数据库中建立一个名为persistent_logins的表

      下面是一个在mysql中的建表语句:

    1 /* For Remember-Me token storage purpose */  
    2 CREATE TABLE persistent_logins (  
    3     username VARCHAR(64) NOT NULL,  
    4     series VARCHAR(64) NOT NULL,  
    5     token VARCHAR(64) NOT NULL,  
    6     last_used TIMESTAMP NOT NULL,  
    7     PRIMARY KEY (series)  
    8 )ENGINE=INNODB DEFAULT CHARSET=utf8;

    当然也可以实现自己的查询逻辑,只需要实现一个继承AbstractRememberMeServices的类即可。持久化cookie默认使用的是PersistentTokenBasedRememberMeServices。

  • 相关阅读:
    #{}和${}的区别
    Shiro 的优点
    SpringSecurity 和 Shiro的之间的比较
    shiro的组件
    Apache Shiro 的三大核心组件
    Maven的工程类型有哪些?
    Maven仓库是什么
    什么是Maven?
    shiro有哪些组件?
    Apache Shiro 的三大核心组件
  • 原文地址:https://www.cnblogs.com/zsxneil/p/6623219.html
Copyright © 2011-2022 走看看