shiro框架---关于多项目之间验证为什么需要共享session

关于多项目之间登录验证为什么需要共享session

服务器上部署了两个项目,登录之后才可以访问其中的接口。现在想要实现,当登录项目1成功后,可以不需要再登录项目2,直接可以访问项目2中的接口。
大部分人都会想到,共享session ,但是为什么是共享session 呢?

一、为什么需要共享session

shiro 框架作为登录验证权限框架 为例,这里还不写这个,先说为什么需要共享session ,正常情况的时候,是如下图:
这里写图片描述
如上图描述,每个项目中shiro 都维护了自己的sessionid与session的关系 ,它们之间不共享。

上图两个项目中切换请求必然会有如下的步骤:
1、sessionId串的生成

浏览器首次对项目1发起请求时,项目1 会为当前请求创建一个session ,根据session 生成一个sessionId 字符串,该sessionId串 与创建的session 维护着一个关联关系。

2、sessionId串存到cookie中

后台将该sessionId串返回给浏览器,浏览器将sessionId串 拿到后,存储到浏览器中的cookie 中。如下图:
这里写图片描述

3、再去请求项目2

当然,当前的这个sessionId串 仅仅对项目1 来说是认识的。如果这时候浏览器接着访问项目2,(在http请求中,发起请求的一方总会把自身所带的所有cookie 打包到请求头中传给服务)。如下边两张图所示:

第一张为在去请求项目2前,可以看到浏览器中的cookie ,此时共有三个,其中sessionId 对应的字符串是来自于项目1 登录成功后返回的 :
这里写图片描述
当我对项目2 发起请求,浏览器将现有的所有cookie 串统统放到了request headers 里,传了过去。
这里写图片描述

4、请求必然失败

这时候项目2 中已有的session 集合中无法根据当前传入进来的sessionId串 匹配成功的。因此登录不成功。
问题就看出来,是因为项目2 里的session 集合无法认识当前传入进来的sessionId ,匹配不到session 导致的访问失败。

二、共享session 后的逻辑

上边已大致说明为什么需要共享session 。那共享session 后,是什么逻辑,也备了一张图,下边的共享项目我已经共享到GitHub 中了。
先来说一下我的理解 ,如下:

这里写图片描述
上图中master 项目为主项目,登录页即在这个项目中,suiteonesuitetwo 为两个从项目,当两个从项目有请求时,如果没有登录的时候,都会打到master 项目的登录页上。共享session 采用的是redis 存储。

上图的步骤如下:

  1. 浏览器请求master 项目,第一次请求的时候,也是会带着浏览器中的cookie 去请求,当然第一次去redis 里肯定找不到对应的session,会通过⑤进入到登录页。
  2. 当在登录页输入完正确的账号密码后,才能登录成功,否则仍会回到⑤。
  3. 在这一步的时候,会将登录成功后的session ,根据它,将生成sessionId串 ,并传到前端浏览器中,浏览器以cookie 存储。
  4. 同时将第③步中生成的session 存储到redis 中。
  5. 当前这里,不只是当登录失败的时候,会进入到登录页中,当浏览器长时间没有访问后台(每次浏览器访问后台,其实都会刷新session 的过期时间expireTime),导致session 超过时,也会进入到该步中。
  6. 当浏览器请求suiteonesuteTwo 这两个从项目时,肯定也是将当前浏览器中的所有的cookie 设置到request headers 请求头中。
  7. 根据传入的sessionId串 到共享的redis 存储中匹配。
  8. 如果匹配不到,则会跳转到master 项目的登录页,如果匹配成功,则会访问通过。

以上描述的并不难,大家也都会想到,那么如何将扯了这么多的淡 真正更简单的,落地实现才是大家关注的。
如果想了解具体shiro中如何实现的共享session ,可以参考下边的链接
[shiro框架—多项目登录访问共享session的实现]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么黑学校计算机室的电脑,大学计算机室变身黑网吧 校方:有需求

河南经贸职业学院计算机房在课间向学生收费办卡使用,被指变相开设“网吧”,一些学生痴迷于网络游戏中。对此,校方向记者表示:“上课时间不收费,课外时间有偿使用,学生有上网需求。”计算机房向学生收费玩游…

Linux重置Mysql密码_解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost

Linux重置Mysql密码 一般这个错误是由密码错误引起,解决的办法自然就是重置密码。 假设我们使用的是root账户。 1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下: #vim /etc/my.cnf(注:windows下修改的是my.ini) 在…

计算机管理档案有什么好处,利用资料管理系统管理档案有什么好处

现在企业的档案都是比较多比较杂,也是非常重要的,所以利用资料管理系统管理档案,比传统档案管理方式要方便快捷得多。资料管理系统能够将文件处理和档案管理两个管理系统有机的结合在一起,真正实现无纸操作,规范管理&a…

excel 公式 平移 引用单元格_不学会这3个Excel隔列求和函数公式,你只能一个个单元格去相加...

Excel中的求和,并不是你们想的123那么简单。有单条件求和、多条件求和,合并单元格求和,隔列求和等等。有关求和的函数也很多,例如SUM函数、SUMIFS函数、还有与这两个函数结合使用的其它函数等等,不知道你们了解了多少。…

Linux - 查看软件安装与安装路径

【1】查看软件是否安装 因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了。总结起来就是这样几类: ① rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep…

惠新宸php教程_百度PHP高级顾问惠新宸:PHP在百度的发展历程

惠新宸,百度PHP高级顾问,年二十有八,好追根究底,有不良嗜好, 幸性本善。乙酉年识互联网,丁亥年入雅虎,翌年入百度。虽性好安稳,然经变无数,唯常叹人生,菠菜汤尔。 大家好&#xff0c…

计算机考试中英文打字题,五笔及中英文打字试题(2套)含答案.docx

文档介绍:五笔及中英文打字试题(2套)含答案.docx中英文打字试题(1)一、 填空题(每空1分,共10分)在打字键区的正屮央有8个键位,即左边的 键和右边的 键。这8个键位被称作基准键,是打字时手指所处的基准位置。 就是通过一个定义新词的对话框,将任何非标進的词语(甚至是…

计算机mips是什么,在计算机术语中,什么叫MIPS

2006-08-18在计算机术语中,什么叫VGA显卡所处理的信息最终都要输出到显示器上,显卡的输出接口就是电脑与显示器之间的桥梁,它负责向显示器输出相应的图像信号。CRT显示器因为设计制造上的原因,只能接受模拟信号输入,这就需要显卡能…

springboot配置多项目下统一切换不同环境变量profile办法

springboot配置多项目下统一切换不同环境变量profile办法 springboot 适合于微服务那种多项目开发,每一个小项目就是一个springboot 项目,比如我们这样: 问题发生: 我们知道springboot 项目中的配置文件application.propertie…

python语言运算符有三种_《Python语言程序设计》 —2.3 运算符

2.3 运算符在计算机中,数据处理实际上就是对数据按照一定的规则进行运算。在已经掌握Python基本数据类型的基础上,我们来看一下对这些类型的数据可以做哪些运算。这里介绍数据处理中一些常用运算符的作用和使用方法。2.3.1 占位运算符占位运算符类似于…

springboot 关于 Class path contains multiple SLF4J bindings.警告的解决

springboot 关于 Class path contains multiple SLF4J bindings.警告的解决 有一次配置好springboot项目启动后,忽然发现有下边的警告: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/E:/mavenJarOnline/c…

c# 计算机ip,C# 获取电脑的IP,网关,MAC,计算机名。。

【实例简介】【实例截图】【核心代码】using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.Net.Sockets;us…

wxml 判断 小程序_如何判断小程序外包公司是否靠谱

微信小程序依附微信App,由于其无需下载,无需安装,无需注册,直接用微信授权登录,不占内存等优势在短短2年多的时间斩获超过10亿用户。又因为微信官方开通了小程序附近五公里展示以及在微信搜一搜增加“小程序”搜索选项…

springboot配置启动后自动打开浏览器访问项目

springboot配置项目启动后自动打开浏览器访问项目 有时候在单机部署,或者项目没有在IDea 开发工具中运行(idea可以自动打开tomcat项目),需要项目启动后自动打开浏览器访问项目,配置方法很简单。 一、具体步骤 所用到…

idea install 失败_idea maven install 卡住,无报错排查。

今天使用idea打包,执行install,看控制台日志,卡主了(意思是日志不继续在控制台输打印了,卡主了,也看不到错误),也没有报错,然后进行排查。进入dos命令,进入到项目的根目录&#xff0…

研祥计算机U盘启动,研华工控机U盘启动设置

研华工控机U盘启动设置_计算机硬件及网络_IT/计算机_专业资料。研华工控机U盘启动研华IPC-610工控机安装的是XP版本,有时安装控制软件不满意时需要卸载软件,往往卸载的不彻底,使得安装无法顺利进行,这样就需要恢复系 统到开始比较…

ladder怎么读_ladder 是什么意思_ladder 的翻译_音标_读音_用法_例句_爱词霸在线词典...

全部四级六级Oh… Why dont you use the ladder?出自-2014年6月听力原文Use a ladder to help her reach the tea出自-2014年6月听力原文It provides a ladder of opportunity for the wealthy.出自-2016年6月阅读原文Americas education system has become less a ladder of …

服务器整机性能测试实验室,分析测试中心-重点实验室

1、XPS(可做刻蚀XPS;UPS价带谱)2、TEM(普通形貌、高分辨透射电镜;可测磁性样品TEM)3、SEM(场发射扫描电镜;可测磁性样品SEM,可喷金)4、BET(可测介孔、微孔材料比表面、孔容及孔径分布等全套分析,也可做水蒸汽、有机气体…

springboot中注入FilterRegistrationBean不生效原因

springboot中注入FilterRegistrationBean不生效原因 回顾 最近自定义了两个过滤器,接口请求返回加密和sql注入处理过滤器,因为在封装一些工具包,我在单独调好之后,就打算做成一个注解,像springboot启动类上加EnableS…

mfc 固定编辑框输入上限和下限_MFC中编辑框数字限制范围

为编辑框添加 int变量的时候下面有2空可以填写最大值与最小值;或者自己添加代码DDV_MinMaxInt(pDX, m_nPort, 1, 65535);但是这个不一定要工作。解决方法:给编辑框添加一个失去焦点(killfocus)的消息,在里面UpdateData(TRUE)一下就搞定。原因…