springSession框架来实现sso单点登陆
介绍一下springsession这个框架,其实springsession框架默认的是使用redis来实现单点登陆的,但是不支持redis集群,这个框架的特点是无侵入的实现单点登陆,就是说我们之前获取user的信息是从session中获取的,我们改造好之后还是从session中获取,逻辑代码不用改变,只不过这个session已经不是我们之前的httpsession了,它是框架包装的session,因为我们在配置文件中配置了相关的属性。ok,看代码吧。
注意:spring的版本要是4.0.3.RELEASE之上。否者会出错!!!
pom.xml
![](/assets/blank.gif)
![](/assets/blank.gif)
<!-- spring session 单点登录 --><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId><version>1.2.0.RELEASE</version></dependency>
View Code
web.xml配置 这个过滤器意思就是说拦截.do的请求,就是这个过滤器来包装session的。
![](/assets/blank.gif)
![](/assets/blank.gif)
<!--<filter>--><!--<filter-name>springSessionRepositoryFilter</filter-name>--><!--<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>--><!--</filter>--><!--<filter-mapping>--><!--<filter-name>springSessionRepositoryFilter</filter-name>--><!--<url-pattern>*.do</url-pattern>--><!--</filter-mapping>-->
View Code
applicationContext-spring-session.xml配置
![](/assets/blank.gif)
![](/assets/blank.gif)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><!-- 配置存在redis的session的过期时间--><bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"><property name="maxInactiveIntervalInSeconds" value="1800" /></bean><!-- 配置redis的最大数量 --><bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"><property name="maxTotal" value="20"/></bean><!-- 配置redisFactory --><bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"><property name="hostName" value="127.0.0.1" /><property name="port" value="6379" /><property name="poolConfig" ref="jedisPoolConfig" /></bean></beans>
View Code
原理是登陆的时候框架会默认向redis插入三条数据:
最后一个是存的User对象的一些数据。第二个是存的过期时间,也就是我们在xml中配置的那个时间,第一个我也不知道是啥。反正是只要时间一到,第一和第二就会删除,就得不到User的信息。尽管第三条数据没有删除(时间到了也会删除),他们三个都是有过期时间的。
那么客户端浏览器呢?浏览器会存一个cookie,cookie的key是SESSION , value是第三条数据的最后那个UUID。
我们也可以设置这个key的名字,他的类在DefaultCookieSerializer.class这个类。包括path和顶级域名,时长什么的都在这个类设置。
注意:上面的applicationContext-spring-session.xml中我没有设置这个DefaultCookieSerializer的属性,在我们要实现单点登陆的情况下,必须要设置的,因为我们要设置顶级域名和,不懂的看redis原生实现单点登陆那篇博客。设置很简单,就是<bean></bean>设置几个字段就ok了。
RedisOperationsSessionRepository 这个类也需要特别注意下,session的get,remove都在这个类里面
转载于:https://www.cnblogs.com/coder-lzh/p/8784770.html
springSession框架来实现sso单点登陆相关推荐
- IM开发基础知识补课(一):正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...
- IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...
- Lind.DDD.SSO单点登陆组件的使用(原创)
回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...
- sso单点登陆实现过程汇总记录
前言 在早期,项目规模不大的时候,企业中存在的系统不多,通常为1或者2个.每个系统都有自己独立的登陆模块,这样用户进行登陆也不是特别麻烦,分别进行登陆就可以了.但是随着企业规模不断变大,随之而然的系统 ...
- 京东SSO单点登陆实现分析
京东的sso流程: 初始访问状态: cookies: http请求: 1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc(可以试试在提交登陆信息前删除该co ...
- 开源sso单点登陆系统推荐
一.CAS 地址https://www.apereo.org/projects/cas CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协 ...
- 框架CAS实现SSO单点登录功能
1. 概述 1.1. 什么是SSO? 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一 ...
- 企业内部应用(阿里商旅)集成 钉钉 与 微信 实现SSO单点登陆
1.钉钉准备工作 (1) 创建应用 https://open-dev.dingtalk.com/fe/app#/corp/app (2)获取应用凭证 记录 AgentId AppKey AppSecr ...
- 带你快速了解SSO单点登陆
引入 定义:在多个应用系统中共享登录.撤销状态 这里说的多个应用系统其实指的不同的域 同源(同一个域):域名.端口.协议均相同 举例:淘宝(www.taobao.com)和天猫(www.tmall.c ...
- 简单入门SSO单点登陆——认证服务
SSO在我们的应用中非常常见,例如我们在OA系统登录了,我们就可以直接进入采购系统,不需要再登录了,这样使我们非常方便.现在网上也有很多实现方法,于是乎我也想写一个看看.我主要用到的是cookie的机 ...
最新文章
- IE下Ajax 提交中文乱码问题
- HDU-2102 A计划 dfs
- Cookie的生命周期问题
- 各大媒体优劣对比_吉利星瑞特别版对比朗逸,亮点只有性价比?
- 【连载】如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(1)
- 《Cortex-M0权威指南》之体系结构---程序映像和启动流程
- 接口说明_实时语音识别_智能语音交互-阿里云
- [转载] python3.x总复习
- linux未找到make命令,linux中无make命令的问题(make: *** 没有指明目标并且找不到 makefile及make命令安装方法)...
- PlayWidget
- 查看挂载阵列卡下的磁盘SMART
- 程序猿为什么逃离北上广?
- 浅浅分析滤波器截止频率
- Revit二次开发—载入族并交互式放置
- 2021年危险化学品经营单位安全管理人员考试报名及危险化学品经营单位安全管理人员找解析
- 网络:以太网类型(EthernetType)整理
- 关于发短信的软件(zz)
- 当PLSQL一直打不开怎么办
- speedtest插件
- python命令解析使用多线程扫描端口