`
Wind_ZhongGang
  • 浏览: 260034 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring Security 3多用户登录实现之九 基于持久化存储的自动登录

阅读更多

      Spring Security实现自动登录的基本流程是,在第一次登录成功时将相关用户凭证及相关自动登录所需信息保存起来,在下次未登录访问受限资源时,会从中取出相关信息进行验证来实现自动登录的效果。

 

      Spring Security除了提供将用户凭证信息存储在Cookie以便下次登录时进行自动登录的方式外,还支持将相关用户凭证信息及自动登录所需信息存储在持久化存储中的方式,这里的持久化存储可以在内存中,可以在外部文件中,也可以在数据库中,实现不同方式的持久化存储都需要实现PersistentTokenRepository接口,里面定义了创建凭证,删除凭证,修改凭证的相关方法,默认的RememberMeServices中使用的是InMemoryTokenRepository类,这个类的作用是将自动登录相关信息放置在内存中。

 

      在这里我使用数据库存储自动登录相关用户凭证及相关信息的方式,不需要任何的代码,只需要进行简单的配置就可达到这样的效果,因为Spring Security已经为我们提供了这样的类,类名为JdbcTokenRepositoryImpl, 查看该类的源码会发现,该类包含了创建持久化登录信息的表语句,还有插入,修改,删除语句。

 

 

    <beans:bean id="rememberMeServices"
                class="org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices">
        <beans:property name="key" value="ZhongGang"/>
        <beans:property name="parameter" value="rememberMe"/>
        <beans:property name="cookieName" value="rememberMe"/>
        <beans:property name="userDetailsService" ref="userService"/>
        <beans:property name="tokenRepository" ref="tokenRepository"/>
    </beans:bean>

    <beans:bean id="tokenRepository"
                class="org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl">
        <beans:property name="createTableOnStartup" value="true"/>
        <beans:property name="dataSource" ref="dataSource"/>
    </beans:bean>

 

     tokenRepository bean这里定义的是数据库存储的方式,如果不在rememberMeServices中设置tokenRepository,那么默认使用的内在的存储方式,也就是默认实现的是InMemoryTokenRepositoryImpl类, 其它属性的设置和之前的基于Cookie的自动登录方式一样,当然还有其它诸如凭证的有效期限等设置值,这根据需求的不同而有所不同。

 

    这是建表相关语句

 

    create table persistent_logins (username varchar(64) not null, series varchar(64) primary key, " +

                    "token varchar(64) not null, last_used timestamp not null)

 

    这些语句都可以在JdbcTokenRepositoryImpl源码中发现, 因为Spring Security没有为这些语句提供设置方法, 所以如果想要使用自己的表和增删改查语句,需要继承这个类自己添加方法。

 

    这里除了tokentRepository和rememberMeServices的设置不同外,其它部分和前一章的没有不同之处。

分享到:
评论

相关推荐

    spring security 参考手册中文版

    Spring Security 参考 1 第一部分前言 15 1.入门 16 2.介绍 17 2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 ...

    JAVA毕业设计之基于springboot的智能家居系统(springboot+mysql)完整源码.zip

    MySQL: 作为持久化存储,负责保存用户信息、设备状态等关键数据。 Spring Security: 提供认证和授权机制,确保系统的安全性。 Thymeleaf: 作为模板引擎,用于生成动态的HTML页面。 REST API: 设计了一系列RESTful...

    spring-boot示例项目

    本项目示例基于spring boot 最新版本(2.1.9)实现,Spring Boot、Spring Cloud 学习示例,将持续更新…… 在基于Spring Boot、Spring Cloud 分布微服务开发过程中,根据实际项目环境,需要选择、集成符合项目...

    Spring in Action(第2版)中文版

    7.4.1代理springsecurity的过滤器 7.4.2处理安全上下文 7.4.3提示用户登录 7.4.4处理安全例外 7.4.5强制web安全性 7.4.6确保一个安全的通道 7.5视图层安全 7.5.1有条件地渲染内容 7.5.2显示用户身份验证信息...

    Spring in Action(第二版 中文高清版).part2

    第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 ...

    Spring in Action(第二版 中文高清版).part1

    第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 ...

    Java毕业设计-基于springboot开发的人事系统-毕业论文(附毕设源代码).rar

    同时,系统还整合了MyBatis、Spring Security等优秀框架,实现了数据的持久化存储和系统的安全性保障。 在毕业论文部分,作者详细介绍了人事系统的设计思想、开发过程以及关键技术点,包括系统需求分析、数据库设计...

    JAVA毕业设计之基于springboot的疾病防控综合系统的设计与实现(springboot+mysql)完整源码.zip

    基于SpringBoot的疾病防控综合系统是一个针对疾病预防和控制需求而设计的应用,它采用了当下流行的微服务架构,以Spring Boot作为主要框架,结合了MySQL数据库进行数据存储。系统通过提供用户友好的界面和强大的后端...

    spring-multi-module-oauth-sso:使用 spring-security-oauth 的多模块 Web 应用程序示例

    spring-multi-module-oauth-sso 基于发布的,使用spring-security-oauth进行单点登录的多模块Web 应用程序示例。介绍该项目被组织为一个多模块 Java Maven 项目: 从此存储库克隆的 oauth-server 模块: : 。 此...

    JAVA毕业设计之springboot家乡特色推荐系统项目(springboot完整源码+说明).zip

    数据库采用了MySQL,并使用了MyBatis作为持久层框架,实现了用户信息、特色信息等数据的持久化存储。同时,项目还使用了Spring Security框架进行用户权限控制和认证。该项目的源码结构清晰,功能模块划分明确,易于...

    Java毕业设计-基于springboot开发的校园社团信息管理-毕业论文(附毕设源代码).rar

    同时,系统还整合了MyBatis、Spring Security等技术,实现了数据的持久化存储和系统的安全控制。前端则采用了Bootstrap等前端框架,确保了用户界面的友好性和响应速度。 在这个项目中,用户可以通过简洁直观的界面...

    springboot夕阳红公寓管理系统的设计与实现.zip

    Spring Security:提供安全框架,用于实现系统的登录验证和权限控制。总之,通过这些技术的结合,"SpringBoot夕阳红公寓管理系统" 能够提供一个稳定、高效、易用的公寓管理解决方案。系统设计考虑到了老年人的特殊...

    基于Springboot开发的网盘存储系统.课程设计

    本项目是一人云盘存储系统,为解决部分用户在上传文件或下载文件时受到第三方平台的限速、或需要文件私有化、有文件在线预览需求等 支持文件上传、下载、在线预览、编辑、分享等功能 本项目在[**RBAC权限系统**]...

    e-master.zip

    系统权限框架采用spring-security oauth2,实现前后台权限校验,权限实现了用户授权和客户端授权。 持久层采用JPA ,能够很好的适应不同数据库,并实现注解式动态查询功能。 数据响应该采用json格式。 服务采用REST...

    springboot基于vue的工厂车间管理系统的设计.zip

    数据库: 系统可能使用MySQL、PostgreSQL或其他关系型数据库来存储数据,通过JPA (Java Persistence API) 或者MyBatis等ORM (Object-Relational Mapping) 工具与Spring Boot集成,实现数据的持久化。中间件: 为了提高...

    企业开发通用框架:E(易)框架

    系统权限框架采用spring-security oauth2,实现前后台权限校验,权限实现了用户授权和客户端授权。 持久层采用JPA ,能够很好的适应不同数据库,并实现注解式动态查询功能。 数据响应该采用json格式。 服务采用REST...

    java开源包3

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包4

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics