遇到问题----shrio------shiro登录,多个项目session被覆盖问题---两个web项目会导致shiro的session污染

2023-10-30

情况

遇到问题----shrio------shiro登录,多个项目session被覆盖问题---一个项目两个web模块会导致shiro的session污染

表现为 我在同一台机子上部署了两个都使用了shiro管理的web项目。

它们的访问路径除了端口不一样,ip是一样的。

当两个系统同时访问时,在一个系统中操作之后另一个系统就会自动退出登录。

但是 如果用域名访问就不会出现这个问题。

原因

web项目的session管理  cookie的名称冲突,两个web项目用了同样的cookie名一样导致的。

解决方法

修改设置cookie名称即可。

这个根据我们自己对项目的了解 cookie是在哪个地方设置的名称,一般有几个地方。

web.xml

一个是web.xml中

<session-config>
<cookie-config>
<name>_crmid</name>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>

name这里设置成不一样的即可。

shiro.xml

shiro中可以设置sessionIdCookie.name

 <!-- 会话Cookie模板 -->
    <bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
        <constructor-arg value="sid"/>
        **<!--设置Cookie名字,默认为JSESSIONID-->
        <property name="name" value="WEBSID" />**
    </bean>

2个web模块,分别设置不同的sessionIdCookie的name即可。

还有另外一种是这样设置

 <bean id="shiroSessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">  
<property name="sessionDAO" ref="sessionDAO"/>  
<property name="sessionValidationInterval" value="1800000"/>  <!-- 相隔多久检查一次session的有效性 -->  
<property name="globalSessionTimeout" value="1800000"/>  <!-- session 有效时间为半小时 (毫秒单位)-->  
<property name="sessionIdCookie.domain" value=".xxx.com"/>  
<property name="sessionIdCookie.name" value="jsid"/>  
<property name="sessionIdCookie.path" value="/"/>  


 <!-- 会话DAO -->
    <bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
        <!-- 设置Session缓存名字,默认就是shiro-activeSessionCache,要和ehcache.xml中的那么对应 -->
        <property name="activeSessionsCacheName" value="shiro-activeSessionCache"/>
        <property name="sessionIdGenerator" ref="sessionIdGenerator"/>
    </bean>


<!-- 会话ID生成器,用于生成会话ID,默认就是JavaUuidSessionIdGenerator,使用java.util.UUID生成-->
    <bean id="sessionIdGenerator" class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator"/>

tomcat

最后tomcat的设置也有可能

tomcat下的server.xml中添加sessionCookieName,A项目设置为A_SESSION,B项目设置为B_SESSION。

<Context path="" docBase="webapp" debug="0" reloadable="false" sessionCookiePath="/" sessionCookieName="A_SESSION"/>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

遇到问题----shrio------shiro登录,多个项目session被覆盖问题---两个web项目会导致shiro的session污染 的相关文章

  • 避免 ssh 会话超时

    我正在远程工作 服务器在 5 分钟不活动后会自动注销 以下是它执行此操作时通常提供的消息 Read from remote host XXXXXXX Operation timed out 我通常会打开多个会话 大约每隔 30 分钟使用一次
  • PHP - session_unset 是否取消注册 $_SESSION 变量?

    Does session unset http php net manual en function session unset php取消注册所有 SESSION 变量 或者是否必须手动清除注册到 SESSION 数组中的每个变量unse
  • ASP.NET MVC - 会话为空

    我在 net4 上有一个 MVC3 应用程序 其会话在开发环境中工作 但不在生产环境中工作 在生产中 我记录了会话 ID 然后在我从会话中设置和获取时它是相同的 当我尝试参加会议时 我得到了Null Exception 这是我访问会话的方式
  • 什么是记录匿名用户投票且不允许重复的可靠方法

    首先 我尽我所能进行搜索并阅读所有看起来相关的问题 但没有具体回答这个问题 这不是重复的 afaik 显然 如果允许在网站上进行匿名投票 则没有万无一失的方法可以阻止某人多次投票 然而 我想知道是否有经验的人可以帮助我想出一种相当可靠的方法
  • session.clear() 在 Hibernate 中如何工作

    我参考了很多文章 但我仍然不清楚什么session clear在休眠状态下执行 据我目前了解到的情况来看 当我们使用批量保存 更新时如下图 Session session SessionFactory openSession Transac
  • Web API 2 会话

    我无法从 web api 2 中获取会话数据 我已经验证 cookie 是在 fiddler 中发送的 我知道 Web api 2 的最佳实践是无状态 但由于项目的要求 现在有必要是全状态的 我已经尝试过这个链接 WebAPI 2 属性路由
  • Java:如何创建 HTTP 浏览会话

    我正在尝试创建一个向服务器发送一些 POST 请求的 Java 应用程序 第一个请求是带有身份验证信息的请求 然后 当我发送下一个请求时 我得到的答案是我的会话已过期 但我在同一秒内发送下一个请求 所以它不能超时 所以我猜想 Java 中有
  • AttributeError:__enter__ 使用 with 语句 SqlAlchemy 会话

    我明白了AttributeError enter 当我尝试像这样使用 SQLAlchemy 会话时guide http docs sqlalchemy org en latest orm session basics html My cod
  • 当 EnableSessionState 为 ReadOnly 时更改会话状态

    我有一个 旧的 ASP NET WebForms 项目 并且我想尽可能将 EnableSessionState 设置为 ReadOnly 以防止会话锁阻止单个用户并发页面加载 在某些页面上 我实际上确实想写入会话状态 通常 只需将那些需要写
  • 为什么 ColdFusion SESSION 变量在前几行被引用后会“未定义”?

    在 Windows2003 IIS6 上运行 ColdFusion 8 01 Standard 应用程序 cfc
  • “location.reload()”丢失 POST/SESSION 数据? (F5 / Ctrl+R 保留数据?)

    我想创建一个按钮来重新加载页面而不丢失 POST数据和 SESSION 在网上 我找到了这段代码 onclick document location reload 这是我的按钮的代码 a class button href style fo
  • 获取 ASP.NET 中所有活动会话的列表

    我知道使用以下代码行登录了哪个用户 Session loggedInUserId userId 我的问题是如何知道哪些用户登录了 以便其他用户可以看到当前登录的用户 换句话说 我可以获得所有活动的 loggedInUserId 会话吗 我没
  • Cookie 未设置或首次不起作用

    在每个页面上 我都设置了一个 cookie 来为与该会话对应的标题按钮着色 问题是 当我第一次在不同的部分打开页面时 cookie 仍然是旧的 彩色按钮也是如此 然后 如果我再次单击同一按钮 则 cookie 会被正确设置 为什么 这是我的
  • 如何为多处理池中的单个进程分配Python请求会话?

    考虑以下代码示例 import multiprocessing import requests session requests Session data to be processed def process arg do stuff w
  • 使用 Django 会话存储登录用户

    我正在创建一个以 REST 为中心的应用程序 它将针对大多数特定于域的模型使用某种 NoSQL 数据存储 对于我打算围绕 REST 数据框架构建的主站点 我仍然希望对用户 计费信息和域数据模型范围之外的其他元数据使用传统的关系数据库 有人告
  • PHP:会话不工作

    当用户在客户端登录时 我将重定向到服务器 一旦验证了他的 user id 和密码 我将在 user id 上设置会话 我将重定向回客户端 然后 我要求填写个人资料信息 如果他想通过 facebook 填写信息 则会出现弹出窗口 请求 fac
  • 如何使用 Spring Security 和 Spring Session 从多个服务器获取相同的会话

    很抱歉我的英语还是不太好 请耐心等待 希望您能理解我的问题 我有两个网络服务器 每个网络应用程序都是相同的 Web 服务器共享一台 Redis 服务器 我使用 Spring Security 和 Spring Session 当我登录第一台
  • 如何检查 servlet 中的 sessionId 是否有效 (java)

    我在我的 Web 应用程序中维护 sessionid 和 HttpSession 对象的映射 我使用 HttpSessionListener 从地图中填充或删除会话 当我的网络服务器崩溃 宕机并恢复时 我需要一种方法来检查提交的 sessi
  • NodeJS 快速会话 req.session 未定义

    我正在开发一个简单的登录系统 但会话似乎没有保存 我编写了一个简单的代码进行测试 谁能告诉我它有什么问题吗 我正在运行登录 之后我正在运行 is logged 但我从未登录并且两个会话都未定义 var port process env PO
  • 如何结束用户会话并确保用户已注销?

    我是 aspx 的新手 现在的问题是 因为我正在做一个支持网络的项目 所以我从用户那里登录了 我拖放登录模板 然后使用 Session Authentication username Tostring 存储当前登录用户的信息等 现在我什至使

随机推荐

  • android 屏幕适配--------解决方案

    以下是Demo首页的预览图 demo下载 http www eoeandroid com forum php mod attachment aid NjE0Njh8ZTIyZDA2M2N8MTMzODgyOTQxN3w1NzAwOTV8MT
  • Spring Boot实现QQ邮件发送,用户注册功能——前后端分离版

    1 准备工作 我们需要前往我们的QQ邮箱开启相关功能 登录QQ邮箱后 点击进入 设置 在账户在一栏中 我们可以找到这个界面 然后点击开启 POP3 SMTP服务 他们会让我们用QQ的密保手机发送一条短信 我们照着即可 验证成功之后 会获得一
  • ISP记1

    目录 0 参考 1 噪声分类 1 1 空间区域 1 1 1 高斯噪声 1 1 2 瑞利噪声 1 1 3 伽马噪声 1 1 4 均匀分布噪声 1 1 5 泊松噪声 1 1 6 加性噪声 乘性噪声 0 参考 数字图像滤波算法的研究及应用 倪层敏
  • anaconda+pytorch安装说明

    第一步 anconda的安装 大家可以参考以下博文 写的比较简约 看起来比较清爽 https blog csdn net ITLearnHall article details 81708148 Anacond的介绍 Anaconda指的是
  • chisel线网(wire)和寄存器(reg)详解(更新)

    主体内容摘自 https blog csdn net qq 34291505 article details 87714172 在Verilog里 模块内部主要有 线网 wire 和 四态变量 reg 两种硬件类型 它们用于描述数字电路的组
  • QVariant的使用

    在有些情况下 我们希望把数据存储在一个变量中 例如 我有一个数组 既希望存整数 又希望存浮点数 还希望存string 想了一个方法 创建一个object类 这是一个很大的类 里面几乎包含了所有类型的数据 如下 class Object pu
  • Java合并两个有序数组

    合并排序 将两个已经排序的数组合并成一个数组 其中一个数组能容下两个数组的所有元素 public class MergeArray public MergeArray public static ArrayList
  • 【APB协议详解】

    APB协议详解 APB Advanced Peripheral Bus 作为高级外设总线是AMBA协议之一 也是最基本的总线协议 按照ARM官方定义 APB是一种低成本的接口协议 可以实现低功耗以及精简的接口设计 降低接口设计的复杂度 AP
  • adb操作提示Read-only file system问题

    Android adb调试时 经常会遇到权限问题 failed for system lib libmm test so Read only file system 即使Root设备 在向 system等系统文件夹操作时 比如push rm
  • Shell基础—正则表达式(通配符、模式表达式)详解【附例】

    Shell基础 正则表达式 正则表达式是一种可以用于模式匹配和替换的工具 通过正则表达式 Shell可以使用一系列的特殊字符构建匹配模式 然后将匹配模式与待比较字符串或文件进行比较 根据比较对象中是否包含匹配模式 执行相应的程序 1 通配符
  • 【环境搭建】Notepad++显示16十六进制编码

    环境搭建 Notepad 显示16十六进制编码 by 041 打开插件 gt 插件管理 找到HEX Editor 安装 重启Notepad 选择插件 gt HEX Editor gt View in HEX 即可显示16进制文件
  • ubuntu18.04使用Mysql指令

    前言 在使用Ubuntu中 对MySQL不熟悉 在实践中不断总结 不断更新 目录 前言 在使用Ubuntu中 对MySQL不熟悉 在实践中不断总结 不断更新 一 安装MySQL 1 更新 2 安装数据库 3 查看版本 二 sql语句 1 启
  • F - Tickets

    F Ticketshttps vjudge csgrandeur cn problem Gym 101911F 暴力 超时 时间复杂度 2 1e5 1e6 别忘了还有查询 include
  • TCP-服务器监听

    package main import fmt net func process conn net Conn 这里我们循环的接收客户端发送的数据 defer conn Close 关闭conn for 创建一个新的切片 buf make b
  • Java抽象类和接口

    一 抽象类 在面向对象的概念中 所有对象都是通过类来描绘的 但并不是所有类都是用来描绘对象的 如果一个类中没有足够的属性和行为来描绘一个完整具体的对象 Java 提供了一个语法 抽象类 例如我们需要一个描述形状的类 成员方法可以输出当前的形
  • Python获取电脑信息

    我做了一个Python获取电脑信息的程序 小部分代码是网上找的 本来想把这个做成一个坑人小程序的 到后面没有灵感了 有想法的可以帮我做一下 私聊发代码给我 代码 pycharm运行通过 coding utf 8 import wmi imp
  • C++数据结构X篇_08_C++实现栈的顺序存储与链式存储

    本篇参考C 实现栈的顺序存储与链式存储整理 先搞懂结构框架 后期根据视频利用c对内容实现 也可以对c有更高的提升 文章目录 1 栈的顺序存储 2 栈的链式存储 栈是一种特殊的数据结构 栈中数据先进后出 且栈中数据只能从头部出栈 能直接访问的
  • 数据库删除数据的方式

    数据库删除数据的方式主要是有三种 drop delete truncate 他们之间的区别在于 1 删除的内容不同 drop 用于删除数据库 数据表 以及 删除数据表中的字段 删除数据库 drop database 数据库名 删除数据表 d
  • Numpy、Pandas使用大全与各参数详解

    目录 一 numpy 1 属性 方法与操作 1 属性 2 方法 3 操作 2 文件读取与保存 1 文件读取 2 文件保存 3 矩阵生成 二 Pandas 1 属性与方法 1 属性 2 方法 2 数据选取 1 取行 2 取列 3 数据处理 1
  • 遇到问题----shrio------shiro登录,多个项目session被覆盖问题---两个web项目会导致shiro的session污染

    情况 遇到问题 shrio shiro登录 多个项目session被覆盖问题 一个项目两个web模块会导致shiro的session污染 表现为 我在同一台机子上部署了两个都使用了shiro管理的web项目 它们的访问路径除了端口不一样 i