做一个网站系统,用户每一次请求都要检查登录信息,而这些信息一般是保存在session或者cookie中,所以一般会判断session或者cookie中是否有数据来确定是否登录了。
遇到一种情况,就是在后台管理用户的时候,例如把某一个用户删除了,但是该用户只要还保留session数据的话还是能操作的。
针对这种情况,我想到两种办法:
1:每一次检查用户是否登录的时候要实时的查询表数据,不单单是检查session。
2:用数据库来保存用户的cookieId,当用户状态改变时候,修改对应的session数据。
不知道还有没有其他更好的办法来解决。欢迎交流,一起学习。
先来复习一下session的基本原理:
a.生成过程:
b.使用:
再回到你的问题,其实你的思路基本是对的:
如果担心性能问题,可把uid直接用本地内存或memcache等缓存起来(删除用户时同时清除缓存,缓存丢了就重新登录)
如果session是存在关系数据库,那就 sid,session,将用户id作为session的值,那样,删除用户时就可以删除该用户的session
如果session存在文件或者redis之类, 可以在生成session时同时建立反向映射关系保存,目的也是当后台删除用户时可以找到对应用户的session来删除