最近在项目上遇到了一个同一账号多终端(或者说多用户)同时登录导致的token重复问题。可以在浏览器相应地做一些防止表单重复提交的操作,比如登录按钮点击一次后变成不可点击的状态,等待服务器的响应之后再恢复成点击状态。不过这也并不能解决同一账号多终端登录的问题。
https://github.com/bluesnail9...
项目中的伪代码如下:
User user = getUser(username,password);
if(null != user) {
String token = findToken(user);
if(null != token) {
user.deleteToken(user);
token = null;
}
if(null == token){
user.insertNewToken(user);
}
}else {
throw new Exception("用户不存在");
}
想一想:
为什么会出现token重复的问题?因为同一账号多用户(或者多终端)同时登录时都进入到了if(null == token)这个语句,所以就向数据库中插入了多个token,但是按道