点单登出如何保证清除的是某一个具体用户的session?

问题描述

在认证中心登出后,调用各个Web应用的登出接口,清除登出用户的session。问题是:如何调用,才能让Web应用知道清除哪个sessionid的session信息呢?用是在每次创建session的时候保存到一个映射里面,id为用户的标示,然后收到退出消息的时候,找到该用户id对应的HttpSession,然后validate?我怎么觉得这是我们自己调用的销毁HttpSession副本,而不是Web服务器内存里的session销毁呢?用Web Service和直接调用url接口其实是一样的,本质问题是如何让接口完成消除特定用户的session的问题。求指教。。。 问题补充:首先感谢您的回答。道理我明白,但是如何根据jsessionid去让它代表的session失效呢?Servlet没有相关API,只能得到request的session的id,去操作该session里的属性。我们现在是通过认证中心去调用各个Web的logout,不是用户通过浏览器去request,所以无法得到具体的session啊。jsessionid可以得到,但是如何得到它代表的session进而去valiate这个才是关键。请指教,歇息了。langshao 写道

解决方案

引用jsessionid可以得到,但是如何得到它代表的session进而去valiate这个才是关键。直接将jsessionid作为key,HttpSession作为value,存到一个Map中(注意要是线程安全的,不要序列化它,就一直在内存中)。取这个HttpSession出来invalidate()就行了。
解决方案二:
引用是在每次创建session的时候保存到一个映射里面,id为用户的标示,然后收到退出消息的时候,找到该用户id对应的HttpSession,然后validate?我怎么觉得这是我们自己调用的销毁HttpSession副本,而不是Web服务器内存里的session销毁呢?这种方法也可以吧, 怎么会是副本呢? 你记录下的只是 HttpSession 的引用,其实是指向同一个对象啊。
解决方案三:
可以这样做:1. 用户在认证中心登录时,将用户名传到Web应用,Web应用自动认相应的用户登录,同时记下用户名和jsessionid。2. 用户在认证中心退出时,将用户名传到Web应用,Web应用找到相应的jsessionid,将此jsessionid标记为已退出。3. Web应用再加一个Filter,在每一个请求之前先检查这个jsessionid是否已退出。

时间: 2024-08-31 22:03:03

点单登出如何保证清除的是某一个具体用户的session?的相关文章

SSO系统登出时无法清除主站凭证(cookie)

问题描述 为了测试,我将domain设为localhost,本机调试时,可生成cookie,也可删除cookie.部署到服务器后,我将代码中的domain更改为了passport.com,登录后能正确生成cookie,却永远无法删除cookie.代码如下:HttpCookiecookie=newHttpCookie("TokenCert");cookie.Expires=DateTime.Now.AddDays(-1);Response.AppendCookie(cookie);Res

PHP+HTML实现登出界面倒计时效果

        在WAMP(Windows+Apache+MySQL+PHP)做网站时,通常需要使用Session记录表单登陆用户名和密码等变量,而在登出时需要清除Session.通常我想实现的登出是通过alert提示用户然后header跳转,但下面的代码是通过JavaScript实现的时间倒计时并跳转到主页的效果,主要是看到学校的BT网站等都是这个效果.         PS:参考 C# 系统应用之Cookie\Session基础知识及php读取Cookie\Session         代

UCenter单点登录/同步登录/同步登出实例

UCenter同步流程: 前提是需要在Ucenter上面添加好需要同步登录的应用(至少2个才能看到效果),并且显示:通信成功 假如我添加了A,B两个应用网站 1.首先当A站登录时,登录成功后,处理实质是调用uc_client提供的方法向UCenter获取2个脚本代码(A.B站),这两个脚本代码就是访问A.B两个站的api/uc.php中的登录方法,可以在方法中做登录所需session和cookie操作. 2.当登出时,操作和登录是一样的,都需要向UCenter获取2个脚本代码,目的是用来触发A.

php 简单的登入登出实例程序(session)

关于会话处理 HTTP 是一种无状态的协议,说明每次请求的处理都与之前或之后的 请求无关,但是为了能够调整用户特有的行为和首选项,出现了一种在客户端存储少量信息(常称为cookie)的实践,但由于 cookie 大小的限制.所允许的 cookie 数量以及 cookie 的实现上的各种不一致,出现了另外一种解决方案:会话处理. 会话处理的实现方式是为每位网站访问者分配一个称之为会话 ID(SID)的唯一标识属性,然后将此 SID 与任意数量的数据关联. 开始会话 session_start();

登出 菜单 远程-远程服务器连接页面点一下菜单按钮就登出

问题描述 远程服务器连接页面点一下菜单按钮就登出 如题,本地发布的时候点击菜单没问题,远程连接的时候一点菜单按钮就LOGOUT了,请问是什么原因呢?

java-如何利用cookie监听浏览器关闭,保存登出日志

问题描述 如何利用cookie监听浏览器关闭,保存登出日志 web项目里嵌套了另一个项目,用长连接监听浏览器关闭或者刷新时间,然后记录日志.但是我的初始化长连接的JS的页面在切换菜单或者刷新时都会重新加载,造 成数据库记录混乱.问了一些人说可以用cookie做一个类似全局变量,然后根据这个变量判断.但是我一点思路都没,求指导.详细些 解决方案 登录web外面框架之后,菜单是在另一项目里.持久化也在嵌套的项目里操作 解决方案二: 浏览器关闭判断是不可靠的.突然断电,浏览器意外关闭,网络中断都会导致

初学者的忧伤-cas集成shiro框架实现单点登出只有第一次有效

问题描述 cas集成shiro框架实现单点登出只有第一次有效 我用cas集成shiro框架实现单点登出,当第一次注销的时候在访问别的客户端时跳回到cas登录页面,并且里面的所以内容必须登录之后才能访问,不关闭浏览器,然后第二次在点击注销后,跳转到cas登录页面,但是通过浏览器地址可以访问到里面的内容,请问这是什么情况.

redirect-wordpress php登陆/登出字样切换问题

问题描述 wordpress php登陆/登出字样切换问题 <?php if(is_user_logged_in()) { echo '<a href=""http://blog.hundunstar.com/login/"" title=""登入"">登陆</a>'; } else { echo '<a href=""'.wp_logout_url().'"&

qt-求解答QT的问题,登出mainwindow

问题描述 求解答QT的问题,登出mainwindow 有大神吗 ,我想做一个登出 就是在mainwindow 里 点击下拉菜单栏的登出,就跳到logindilog 可是 无论用什么都不对 求方法 解决方案 http://www.linuxidc.com/Linux/2011-08/40276.htm 解决方案二: 能说清楚你的问题吗? QAction 用于添加到下拉菜单栏中,然后使用connect 函数进行信号槽的绑定,在点击响应槽函数中做登出操作. 一般退出应用程序的使用的函数为 qApp->