问个session 删除用户后如何让那个用户session丢失

hellsam · 2018-02-07 02:36:55 · 1362 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-02-07 02:36:55 的主题,其中的信息可能已经有所发展或是发生改变。

比如:
用户注册后并且登陆了,  然后我在后台删除这个用户名的时候  用户的session依然是存在的可以访问 
当然重新登陆肯定不行了,  
一般这种情况 删除用户后如何摧毁这个用户的session呢, 没思路啊!!

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1362 次点击  
加入收藏 微博
11 回复  |  直到 2018-02-09 19:44:28
alphayan
alphayan · #1 · 7年之前

你登录的时候创建session,你退出,删除用户的时候注销session

zxmin
zxmin · #2 · 7年之前
alphayanalphayan #1 回复

你登录的时候创建session,你退出,删除用户的时候注销session

他想表达的应该是: 后台管理系统中,创建了用户->用户使用在使用系统->后台删除了用户 但是用户依然能够使用一段时间,除非退出,下次就无法用帐号登录使用 解决方案:在删除用户的时候同时删除用户生成的session就好了

hellsam
hellsam · #3 · 7年之前

@zxmin 删除用户的session我知道, 但是不知道如何找到这个用户的session啊 一个WEB可能登陆几十几百个用户,几百个SESSION ID 无法分辨啊。

zxmin
zxmin · #4 · 7年之前

@hellsam 你是怎么设计的session,说白也是键值对,如果你不知道怎么找到session,那么请问登录后使用过程中验证合法性,你是怎么通过session获取对应用户的信息的?一般session的键是用户id加一些规则生成的,必须找得到啊,不然session缓存一堆意义何在。

dong-hao
dong-hao · #5 · 7年之前

不太明白楼主的问题到底是什么,session 信息是和用户 id 绑定的,每次请求过来都是需要在代理服务器处检查用户 session 有效性的。 你在后台数据表里把 session 信息干掉了,用户再依据这个 session 发来任何请求,都是跟用户 id 对不上号了,不是自然而然就失效了吗,这个不需要在客户端把用户的 session 干掉。

hellsam
hellsam · #6 · 7年之前

@dong-hao 对啊

是这样判断的
if session["username"] !=""{
//登陆状态 
但是这个session  username 每个用户都不同  自动生成一段key,这个KEY在服务器里删除可能几百几千个用户登陆者,这个KEY不知道是哪个啊。  
}
dong-hao
dong-hao · #7 · 7年之前
hellsamhellsam #6 回复

@dong-hao 对啊 ~~~ 是这样判断的 if session["username"] !=""{ //登陆状态 但是这个session username 每个用户都不同 自动生成一段key,这个KEY在服务器里删除可能几百几千个用户登陆者,这个KEY不知道是哪个啊。 } ~~~

总不能几百几千个用户对应着同一个 key 吧,哪有这样设计的,这样的 key 有卵用吗???在你的这个场景,key 肯定是保存唯一且能跟用户 id 达到 一一对应的,整个框架推倒重来吧

jarlyyn
jarlyyn · #8 · 7年之前

建立一个token表,

在需要注销用户的时候重新生成这个token 。

记得自己维护和管理这个token的缓存。

jarlyyn
jarlyyn · #9 · 7年之前

对了,没说清楚

你的session也要存对应的token

每次登录,判断下session中的token和系统里uid对应的token是否是同一个,不是的话当作没登录处理就好了。

hellsam
hellsam · #10 · 7年之前

@jarlyyn 我想了下还是用老版本解决吧 验证session是否存在 并且查询这个session里的用户名和数据库查询对比是否存在 ,数据库不存在即使SESSION存在也自动退出即可

就是可能占用点SQL资源 每个用户需要验证SESSION+SQL查询 ,这样即可解决删除用户后 查询不到依然退出了。

jarlyyn
jarlyyn · #11 · 7年之前
hellsamhellsam #10 回复

@jarlyyn 我想了下还是用老版本解决吧 验证session是否存在 并且查询这个session里的用户名和数据库查询对比是否存在 ,数据库不存在即使SESSION存在也自动退出即可 就是可能占用点SQL资源 每个用户需要验证SESSION+SQL查询 ,这样即可解决删除用户后 查询不到依然退出了。

这个办法也没啥问题, 但不管怎么样前面总要架个缓存啊…… 另外删除用户一般应该是改标志位吧?

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传