-
问题:在如果在同一个浏览器下只有一个用户登录的情况,在服务端可以使用 Session 存储用户登录信息。但是在项目中如果需要在同一个浏览器下允许多个不同的用户登录,这样做会存在问题,因为服务端区分不同用户是通过 Cookie 中存储的 JSESSIONID 区分的,如果 JSESSIONID 相同,那么他们在服务端将会使用同一个 Session 对象。而同一浏览器使用的 Cookie 是相同的, 从而 JSESSIONID 也是相同的,无法区分不同的用户。当浏览器登录第一个用户后,用户信息写入到 Session 中,第二个用户登录时,将会覆盖第一个用户的登录信息。
-
解决方法:不再依赖 Tomcat 默认的 JSESSIONID 来标识客户端,每进行一次登录后,服务端根据用户信息生成一份令牌,一份写入到数据库中并设置有效时间与身份信息存储在一起,定时清除,另一份返回到客户端。这个令牌可以放到页面的某个隐藏域中,但是不能存放在 Cookie 内,因为这样还是不能唯一区分用户。接下来客户端每次访问服务端都带上该令牌,以供校验身份信息,根据令牌的值,在数据库中找到对应的身份信息。这样就能区分同一浏览器下登录的不同用户了。校验通过后,再将此令牌返回给客户端,以供其下次访问使用。为防止令牌被盗用,尽量使用 Https。
相关文章
- 04-07同一浏览器下多用户登录问题解决
- 04-07eeplat平台开发中限制多个用户同时登录同一个账号的问题解决方案
- 04-07关于云服务器中IE浏览器无法下载和登录网站的问题解决方案
- 04-07在CMD下启动vmware、Xshell连接虚拟机以及控制Chrome浏览器自动执行js登录校园网
- 04-07vue_cli下开发一个简单的模块权限系统之建立登录页面并且实现在浏览器输入地址出现内容
- 04-07【windows 下安装 mysql-server 无法登录问题解决】
- 04-07iOS直播Liveroom组件,游客,用户多次切换登录同一直播间,消息出现多次重复问题解决
- 04-07解决win系统下Google浏览器无法进行账户登录和同步的问题|Google浏览器同步
- 04-07C#检测程序重复运行的函数(可以在多用户登录情况下检测)
- 04-07织梦dedecms在php5.4环境下登录后台或者退出后台报错或者显示页面找不到的问题解决