项目开发使用了SSH框架 tomcat服务容器,客户端为安卓APP。用户表中有一个boolean字段,表示是否在线(true为现在状态,false为离线状态)。用户登录请求会改变状态为在线,用户发送退出请求会改变状态为离线。同一个账户不能被多个设备同时登录,同一个账户同时登录后面的登录操作会失败。如果登录以后客户端异常关闭或者用户关机,服务器会监听session的销毁,来改变为下线状态。
问题来了,如果在用户登录后,服务器关闭了,用户连不上了,用户的登录状态在数据库里还是在线。等服务器重新启动以后会出现下面两个情况,
1 这个用户没有登录的时候,服务器都一直以为他还在登录,业务中查询客户的状态时得到的是错误的数据。
2 当这个客户要登录的时候,判断已经登陆了,这个用户被认为重复登录,永远登录失败。
请问解决这个问题的主流办法是什么了?大家有什么好建议。本人开发经验不多,自己遇到这个问题周围也没有什么可以讨论的人,只能求助大家了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
保存登录状态,三种保持会话的方式:
1、session机制保持会话,高并发的时候可以将session存储到redis
2、cookie机制保持会话,
3、token机制保持会话,将token添加到http header或者做为参数添加到url。
1.服务器重启时把所有用户都置为离线状态,
2.可以把session放到数据库或者缓存,重启服务后,可以保持会话