介绍一下springsession这个框架,其实springsession框架默认的是使用redis来实现单点登陆的,但是不支持redis集群,这个框架的特点是无侵入的实现单点登陆,就是说我们之前获取user的信息是从session中获取的,我们改造好之后还是从session中获取,逻辑代码不用改变,只不过这个session已经不是我们之前的httpsession了,它是框架包装的session,因为我们在配置文件中配置了相关的属性。ok,看代码吧。

注意:spring的版本要是4.0.3.RELEASE之上。否者会出错!!!

pom.xml

<!-- 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的。

<!--<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配置

<?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单点登陆相关推荐

  1. IM开发基础知识补课(一):正确理解前置HTTP SSO单点登陆接口的原理

    1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...

  2. IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理

    1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...

  3. Lind.DDD.SSO单点登陆组件的使用(原创)

    回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...

  4. sso单点登陆实现过程汇总记录

    前言 在早期,项目规模不大的时候,企业中存在的系统不多,通常为1或者2个.每个系统都有自己独立的登陆模块,这样用户进行登陆也不是特别麻烦,分别进行登陆就可以了.但是随着企业规模不断变大,随之而然的系统 ...

  5. 京东SSO单点登陆实现分析

    京东的sso流程: 初始访问状态: cookies: http请求: 1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc(可以试试在提交登陆信息前删除该co ...

  6. 开源sso单点登陆系统推荐

    一.CAS   地址https://www.apereo.org/projects/cas CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协 ...

  7. 框架CAS实现SSO单点登录功能

    1. 概述 1.1. 什么是SSO? 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一 ...

  8. 企业内部应用(阿里商旅)集成 钉钉 与 微信 实现SSO单点登陆

    1.钉钉准备工作 (1) 创建应用 https://open-dev.dingtalk.com/fe/app#/corp/app (2)获取应用凭证 记录 AgentId AppKey AppSecr ...

  9. 带你快速了解SSO单点登陆

    引入 定义:在多个应用系统中共享登录.撤销状态 这里说的多个应用系统其实指的不同的域 同源(同一个域):域名.端口.协议均相同 举例:淘宝(www.taobao.com)和天猫(www.tmall.c ...

  10. 简单入门SSO单点登陆——认证服务

    SSO在我们的应用中非常常见,例如我们在OA系统登录了,我们就可以直接进入采购系统,不需要再登录了,这样使我们非常方便.现在网上也有很多实现方法,于是乎我也想写一个看看.我主要用到的是cookie的机 ...

最新文章

  1. IE下Ajax 提交中文乱码问题
  2. HDU-2102 A计划 dfs
  3. Cookie的生命周期问题
  4. 各大媒体优劣对比_吉利星瑞特别版对比朗逸,亮点只有性价比?
  5. 【连载】如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(1)
  6. 《Cortex-M0权威指南》之体系结构---程序映像和启动流程
  7. 接口说明_实时语音识别_智能语音交互-阿里云
  8. [转载] python3.x总复习
  9. linux未找到make命令,linux中无make命令的问题(make: *** 没有指明目标并且找不到 makefile及make命令安装方法)...
  10. PlayWidget
  11. 查看挂载阵列卡下的磁盘SMART
  12. 程序猿为什么逃离北上广?
  13. 浅浅分析滤波器截止频率
  14. Revit二次开发—载入族并交互式放置
  15. 2021年危险化学品经营单位安全管理人员考试报名及危险化学品经营单位安全管理人员找解析
  16. 网络:以太网类型(EthernetType)整理
  17. 关于发短信的软件(zz)
  18. 当PLSQL一直打不开怎么办
  19. speedtest插件
  20. python命令解析使用多线程扫描端口

热门文章

  1. 【渝粤教育】国家开放大学2018年秋季 0221-22T数字电子电路 参考试题
  2. [渝粤教育] 中国地质大学 运筹学1 复习题
  3. [渝粤教育] 西南科技大学 机械设计基础 在线考试复习资料(1)
  4. 【渝粤教育】广东开放大学 环境与资源保护法 形成性考核 (56)
  5. Python基础教程:(小窍门)如何优化Python占用的内存
  6. 17 类的成员 私有
  7. ThinkPHP5 助手函数
  8. markdown的学习
  9. 数据分析 -- 流程
  10. kaldi GMM模型解码指令 gmm-latgen-faster详解