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

在认证中心登出后,调用各个Web应用的登出接口,清除登出用户的session。
问题是:如何调用,才能让Web应用知道清除哪个sessionid的session信息呢?
用是在每次创建session的时候保存到一个映射里面,id为用户的标示,然后收到退出消息的时候,找到该用户id对应的HttpSession,然后validate?我怎么觉得这是我们自己调用的销毁HttpSession副本,而不是Web服务器内存里的session销毁呢?用Web Service和直接调用url接口其实是一样的,本质问题是如何让接口完成消除特定用户的session的问题。求指教。。。

soa

3个回答

[quote]jsessionid可以得到,但是如何得到它代表的session进而去valiate这个才是关键。[/quote]
直接将jsessionid作为key,HttpSession作为value,存到一个Map中(注意要是线程安全的,不要序列化它,就一直在内存中)。取这个HttpSession出来invalidate()就行了。

可以这样做:
1. 用户在认证中心登录时,将用户名传到Web应用,Web应用自动认相应的用户登录,同时记下用户名和jsessionid。
2. 用户在认证中心退出时,将用户名传到Web应用,Web应用找到相应的jsessionid,将此jsessionid标记为已退出。
3. Web应用再加一个Filter,在每一个请求之前先检查这个jsessionid是否已退出。

[quote]是在每次创建session的时候保存到一个映射里面,id为用户的标示,然后收到退出消息的时候,找到该用户id对应的HttpSession,然后validate?我怎么觉得这是我们自己调用的销毁HttpSession副本,而不是Web服务器内存里的session销毁呢?[/quote]
这种方法也可以吧, 怎么会是副本呢? 你记录下的只是 HttpSession 的引用,其实是指向同一个对象啊。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何判断用户登出
如何来判断用户登出,因为我要在数据库里记录其登出时间,特别是用户直接点X关闭,我该怎么处理
怎样定时清除session中的某一个值
session 中放的是验证码,为了防止攻击,我要定时清除session中的这个验证码rn产生验证码之后放入session中rnsession.setAttribute("verifyCode",验证码);rn定时清除rnsession.removeAttribute("verifyCode")
登出后Session 的问题
登录页用户点登出后返回LOGIN.ASPrn但是点后退页又会回到刚刚已经登录的状态,rn请问要怎么避免这个 ,
如何清除指定的Session
在得知 rnA用户所产生的SessionID 为 abcde rnB用户所产生的SessionID 为 jklkl rnrn现在作为C用户的我,如何清除 SessionID为jklkl的B用户Session呢
如何清除session的值
请教老师,vc#.net做asp.net项目,如何清除session变量的值,比方说(给session变量的值置为空),但不清除session变量。rn谢谢!
如何清除客户端session
如何清除客户端session
如何把Session清除?
在网站引用Session,要退出的话,如何把Session清除,那位朋友可以告诉一下啊,先谢谢了!
记录用户的登出时间
用户登录时间很容易获得,但登出时间可能有rn如下几种情况:rn1、用户点击登出按钮,正常登出,这样很容易记录登出时间。rn2、用户直接关闭浏览器。rn3、用户关闭浏览器相应的tab页(不同浏览器)。rn4、用户长时间无操作,session过期。rn5、用户直接关机。rnrn对于上述几种情况有没有能够完全做到记录登出时间的方法。rn请高手指点。
谁会单点式登出呀???????
我已经解决了单点登陆 就是跨项目的登陆 但是如何单点登出呀 在一个项目登出 另一个也登出??? 用FormsAuthentication.SignOut()好像不行呀rn谁能指点指点???
asp.net 用户的登出
现在我想要做的是,我又一个登出的按钮,我点击登出,从session 中取出我登录时,在session 中保存的用户,之后改变数据库中,改用户的状态时登出状态, 如果用户并没有直接点登出而是直接关闭浏览器,我怎么样才能改变数据库中该用户的状态。
06用户登出
系统介绍使用Django框架开发Web应用程序,当然,依然水煮风格
【微信点餐】-- 登录登出(分布式系统下的session理论)
  传统后台管理,在初始化时会在数据中插入超级管理员的初始用户用户名和密码,后续超级管理员通过界面添加普通管理人员的用户名和密码,普通用户再在登录界面输入用户名和密码完成登录。   由于卖家端涉及到的人员定位较少,微信的相关特性为重点。因此微信端设置为扫码登录。在该功能中,项目初始化时,其实是在数据库中添加了有访问权限用户的openId,这样微信授权拉取了用户身份后,如果openId有权限,则放...
清除session
自己做的小网站,用的SSH框架,出现这样的问题:用户aaa在已登录状态,其它用户用别的电脑进入网站首页,用户名的输入框会显示前面用户的用户名aaa;请问各位大神,该怎么处理?
Session 清除
想问下用户在退出系统(点x)后Session会立刻清除吗?rnrn如果不行,在Page_Dispose事件里填写rnSession.Clear()rn会执行这句代码吗?我在这里打了断点,关闭的时候没进去rnrnrn现在是为了在刷新页面的时候不清除Session,而关闭页面后马上清除,有没好办法可以解决?rnrn期待高手指点迷津
session清除
我想退出网页时清除session中的值,不管是session.clear(),session.removeall(),session.remove("关键字")都不行,在这之后还可以读取到该session的值,十分不解。
session和cookie做登出功能
JavaWeb里的基础核心技术
CodeIgniter 判断用户超时登录清除session
CodeIgniter 判断用户超时登录清除session
如何实现Web用户的登出功能?
RT
php,如何跨域清除session
有N个网站,假设域名如下a.test.com,b.test.com,c.test.com,d.test.com......N个网站都存在session['e'],现在有一需求,在网站b中执行操作,通知a清除session['e'],a收到命令后,再通知其他服务器清除session['e'],我不想用ajax做,因为涉及到不能用js的情况,我想要的是后台之间的交互,请问各位有什么好方法
.net中如何清除session
在asp.net中如何清除session的值?rnsession的值是由asp生成的,如:session("admin")="abc"rn我相在asp.net中清除掉session或者是session("admin")=""rn代码如何写?我直接写没有成功。
webbrowser中如何清除session
我在窗体中添加了webbrowser控件模拟了一个浏览器,然后添加了一个按钮,每点击一次按钮重新载入一次网页,但是每次载入网页的session相同,我想实现每次载入一次网页session都不相同,请教高手如何实现!!!!
如何清除session中的内容?
如何清除session中的内容?
BS中如何清除SESSION?
用户名登陆后,如何使页面返回到从新登陆的页面???
SpringMVC-Mybatis-Maven-MySQL 登录登出并校验用户且写入session的demo
这是一个Spring-SpringMVC-Mybatis-Maven-MySQL架构的Java项目,主要实现登录校验功能。登录页面输入用户名和密码,点击登录按钮,查询数据库校验输入的内容,校验成功进入用户显示页面,将用户写入session,不成功弹出警告框。显示页面有登出按钮,点击之后回到登录页面,并去掉session中的用户信息。properties包中带有.sql建表文件
认证用户自动登出的问题
最近做了个网站(asp.net 2.0+sql,用户登陆后进入后台,但20多分钟后对服务器无动作就会自动登出,用户感到很烦,有没有比较好的解决办法,比如登出时间延长到60分钟。
具体点
DO.NET访问数据库的基本步骤?
如何保证用户选择dropdownlist?????
在我的页面上:一个文本框(让用户输入查询条件)、一个下拉框(dropdownlist)一个按钮(用来检索匹配的项)。现在如何才能保证让用户一定选择下拉框??不要说在单击按钮是让文本框消失!
点击按纽,清除session某一个值,然后关闭窗口,怎么实现
点击按纽,清除session某一个值,然后关闭窗口,怎么实现
怎么统计用户登出的时间
首先用户登录我会保存用户的各种信息rn然后用户点浏览器右上角那个叉子的时候 我想统计用户的退出时间 并且把这个时间保存在用户登录的时候保存的那条信息中
rails用户登出时候错误
当用户没有登录时候,header里显示登录注册。当用户登录后,显示个人主页和登出。rn再点了登出之后,可以安全退出账号,并删除cookies。rn下面是错误信息rnrnrnrnArgumentError in Pages#homernrnShowing C:/Users/Kouunn/Desktop/nihong/app/views/layouts/_header.html.erb where line #29 raised:rnrn[color=#FF0000]wrong number of arguments (0 for 2)[/color]rnrnExtracted source (around line #29):rnrn26: rn27: <%= link_to image_tag('images/logo.png'),home_path %> rn28: rn29[color=#FF0000]: <% if signed_in? %>[/color]rn30: rn31: <%= link_to "个人主页",current_user %> rn32: | rnrnTrace of template inclusion: app/views/layouts/application.html.erbrnrnRails.root: C:/Users/Kouunn/Desktop/nihongrnApplication Trace | Framework Trace | Full Tracernrnapp/models/user.rb:36:in `authenticate_with_salt'rnapp/helpers/sessions_helper.rb:29:in `user_from_remember_token'rnapp/helpers/sessions_helper.rb:13:in `current_user'rnapp/helpers/sessions_helper.rb:17:in `signed_in?'rnapp/views/layouts/_header.html.erb:29:in `_app_views_layouts__header_html_erb___199233694_31528296'rnapp/views/layouts/application.html.erb:22:in `_app_views_layouts_application_html_erb___776862230_31346676'rnrnRequestrnrnParameters:rnrnNonernrnShow session dumprnrnShow env dumprnResponsernrnHeaders:rnrnNonernrn----------------------------------------------------------------------------------------------rnheader.html.erb的代码rn[code=ruby] rn rn <%= link_to image_tag('images/logo.png'),home_path %> rn rn<% if signed_in? %>rn rn <%= link_to "个人主页",current_user %> rn | rn <%= link_to "登出",signout_path %>rn | rn rnrn<% else %>rnrn rn <%= link_to "登录",login_path %> rn | rn <%= link_to "注册",signup_path %>rn rn rn<%end%>rn [/code]rn----------------------------------------------------------------------------------------------rnsigned_in?定义在SessionsHelper里,代码如下rnrnrn[code=ruby]rnmodule SessionsHelperrn rn def sign_in(user)rn cookies.permanent.signed[:remember_token] = [user.id,user.salt]rn current_user = userrn endrn rn def current_user(user)rn @current_user = userrn endrnrn def current_userrn @current_user ||= user_from_remember_tokenrn endrn rn def signed_in?rn !current_user.nil?rn endrnrn def sign_outrn cookies.delete(:remember_token)rn current_user = nilrn #self.current_user = nilrn endrnrn privatern rn def user_from_remember_tokenrn User.authenticate_with_salt(*remember_token)rn endrnrn def remember_tokenrn rn cookies.signed[:remember_token || [nil , nil]]rn endrnendrnrnrn[/code]rnrn求各位大牛帮我解决一下这个问题,是在windows平台下rnrnruby -版本rnruby 1.9.3p392 (2013-02-22) [i386-mingw32]rnrnrails -版本rnRails 3.2.13
mysql全量备份的sql文件,可以恢复到具体某一个时间点以及单张表啊?
mysql全量备份的sql文件,可以恢复到具体某一个时间点以及单张表啊?rn今天凌晨3点备份的mysql20101221030000.sql。rn1, 单独恢复csf库到昨天下午13:15:00的数据。rnrn2,单独恢复csf库下面的csf_put表到昨天上午13:05:00时的数据。rnrn大家有什么方案没有啊,谢谢了!
HttpClient如何保证所有操作是在同一个session中完成的?
HttpClient如何保证所有操作是在同一个session中完成的?是不是所以的操作都要发送sessionid啊,怎么获得post成功以后在服务器端的sessionid???
请给出具体程序如何读具体的某一个扇区
请给出具体程序如何读具体的某一个扇区rn另外如果您有时间的话,请不吝指教跟我联络,rnapork@163.com
如何清除所有用户的Session.
本人想把tomcat服务上的所有的Session清除,不知从何下手,请各位大侠帮忙。
cookie 和session机制具体是怎么实现的?
就像163的信箱,选择两周内不重复登录的话,用户名和密码是不是都会存储在cookie里呢?使用session的话服务器还要生成一个独一无二的id让客户机存储,一般也会存储在cookie里面,但是这个独一无二的id到底是怎么和客户机关联起来的呢?rn假设一个局域网内用两台机器A、B,B正常登录163邮箱,为了方便选择了两周内不重复登录,而A通过嗅探器得到了B的所有cookie信息,然后A先用自己的账号登录163邮箱,退出后,用嗅探到的B的cookie信息修改自己ie缓存里的cookie文件,本来以为这样就可以自动登录到B的邮箱了,但这没有实现,本来以为是服务器端通过session进行双重验证的缘故,但是仔细想想,服务器端是如何判断A不是B的呢?难道是ip?如果是的话,B第二天修改了其IP地址,那它的163信箱的自动登录不也就不能实现了么?现实情况是这样么?rnrn期待~
☆★☆★☆怎么保证大小写代表的是一个用户?☆★☆★☆
一个用户注册的咚咚,注册的时候大小写肯定要是一个人,rn就是说不允许存在两个用户名只有大小写有差别。rn这个怎么做?rnrnsql语句里面有不分大小写的字符串比较吗?rnrn没有的话只能另加一个字段,全变为小写或者大写存进去,需要的时候和这个字段比较。rn
关闭某一个网页时如何给session赋值
关闭一个网页时如何给session赋值。比如关闭1.asp给 session("q")="q",请问怎么实现了啊,
登出
这个项目前面的章节简单介绍了idea的使用,vue的入门,Spring Boot的应用开发入门。nnn后面开发了一个通用的后台管理系统。技术上使用Spring Boot框架整合ssm,数据库使用MySQL,使用整合了druid数据库连接池。使用了quartz开发自定义定时任务。使用了AOP开发日志系统。使用shiro开发权限功能。使用BootStrap搭建前端页面,Vue做前端交互。
java struts2的session怎么清除?也就是用户单击退出系统时怎么清除session?
java struts2的session怎么清除?也就是用户单击退出系统时怎么清除session?rn我的部分代码:rnD301000Action extends ActionSupport implements SessionAwarernrn private Map session;rnrn public void setSession(Map session) rn this.session=session;rn rn public String layout() throws Exception rnrn session.clear();rn return "success";rn rn可是上面的代码不能清除session,是什么问题呢?有什么办法解决啊?rn
如何保证重新编译后session不丢失?
在一个项目中,用session保存用户id号,每次重新编译项目后,session就丢失,就需要重新登陆系统,调试时烦死了,如何保证不需要每次编译后都要重新登陆?(我不想用cookie)
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数