需求: 用户点击"取消"则当前登录取消,点击"确认"则把退出上个设备的登录,并在当前设备登录
思路
在login时判断该用户是否有token
有:表示已经登录过了,回状态码和信息给 前端"用户进行二次登录"
无:表示用户第一次登录
//用户进行新设备登录,判断当前用户token是否存在redis
Boolean repeat = redisUtil.hasKey("token_" + userAccount.getAccount());
if (repeat) {
return new ResponseData<>(RspCodeMsgEnum.LOGIN_REPEAT, "用户使用新设备登录");
}
新建接口:二次登录接口(在新设备上点击确实登录时调用)
逻辑:
1、下线上次的登录状态(清楚该用户的token)
2、拿到当前用户的信息调登录接口 继续登录
@Override
public ResponseData<LoginVO> loginRepeat(LoginParam param) {
log.info("用户进新设备登录");
if (!"admin".equals(param.getAccount())) {
String account = param.getAccount();
//删除第一次登录时的token
redisUtil.del("token_" + account);
//执行登录
log.info("旧token已删除,开始重新登录");
return login(param);
} else {
return new ResponseData<>(RspCodeMsgEnum.FAIL);
}
}