首页新闻找找看学习计划

java中Session

0
悬赏园豆:50 [已解决问题] 解决于 2017-12-22 16:22

比如A用户登录后不注销,直接B用户登录,sessionId 是一样,而且A可以访问B的权限内容,B可以访问C的权限内容。求解

行走在砂砾中的主页 行走在砂砾中 | 初学一级 | 园豆:61
提问于:2016-08-30 17:16
< >
分享
最佳答案
0

注销的时候清除下session

((HttpSession) sc.getAttribute(userName)).invalidate();// 清除第一次登陆的session

收获园豆:40
刘宏玺 | 专家六级 |园豆:14004 | 2016-08-30 17:36

就是没有注销啊!我老大说业务的那些人,两个账号就直接一起登录了  谁给你注销啊!所以说注销的功能并没有实现 ,但是sessionID 又是一样的  造成混乱,权限都不能用了。

行走在砂砾中 | 园豆:61 (初学一级) | 2016-08-30 17:39

注销的功能我写了  但是他们不会用啊。只会说功能没实现啊

行走在砂砾中 | 园豆:61 (初学一级) | 2016-08-30 17:40

@帝丶殇: 那就登录的时候先调用注销的方法,然后在进行登录的操作!

刘宏玺 | 园豆:14004 (专家六级) | 2016-08-30 17:40

@刘宏玺: 我想过这个,但是另一个不就被我清了。感觉换汤不换药啊。

行走在砂砾中 | 园豆:61 (初学一级) | 2016-08-30 17:41

@帝丶殇: 没有换汤不换药啊,这样就可以控制住用户是最近一次登录的用户的权限了

刘宏玺 | 园豆:14004 (专家六级) | 2016-08-30 17:43

@刘宏玺: 实在不行的话 才会用这个。已经烦了两天了,毕竟这样写的话那边就被我清掉了,清掉后那边就相当于关闭了啊!我现在想实现两个在一台电脑一个浏览器同时登录  而且互不干扰

行走在砂砾中 | 园豆:61 (初学一级) | 2016-08-30 17:46

@帝丶殇: 使用两个不同内核的浏览器就实现了!

刘宏玺 | 园豆:14004 (专家六级) | 2016-08-30 17:47

@刘宏玺: 就是要用一个浏览器啊!两个浏览器  压根就没问题啊!所以我快疯了

行走在砂砾中 | 园豆:61 (初学一级) | 2016-08-30 17:50

@帝丶殇: 那你就建立一个包含所有权限的用户不就完事了!

刘宏玺 | 园豆:14004 (专家六级) | 2016-08-30 17:52

@刘宏玺: 你的普通用户能够比管理员的权限还多吗?而且现在权限混乱了,拦截器都不起作用,随意访问了

 
行走在砂砾中 | 园豆:61 (初学一级) | 2016-08-30 17:59
其他回答(2)
0

SessionID一样?

顾晓北 | 园豆:9534 (大侠五级) | 2016-08-30 17:24

是的  我最开始是用的shiro的session  后来普通用户用HttpSession 管理员用shiro session  但是sessionID却是一样的

支持(0) 反对(0) 行走在砂砾中 | 园豆:61 (初学一级) | 2016-08-30 17:26
0

说明这个问题之前先举个可以辩证的生活中的例子:

你用qq1234登录tencent游戏官网,然后打开lol官网,再打开cf官网,然后再cf官网注销登录lol官网,你再回到lol官网你会发现什么?session重置。

以上是一个很好的session的解决方案。

 

但是也一些网站做的不好导致session混乱。

 

这可以理解为是session的一个bug,也可以理解为程序员对session使用的错误。

 

所以,登录过程要有一个session清空的过程。

 

收获园豆:10
CaiYongji | 园豆:1267 (小虾三级) | 2016-09-08 11:49

你是说我他登录的时候判断他是否登录过,然后清除下,再登录,是这个意思吗

支持(0) 反对(0) 行走在砂砾中 | 园豆:61 (初学一级) | 2016-09-08 11:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册