|
|
|
@ -6,6 +6,7 @@ import com.gaotao.common.constant.SysMsgConstant; |
|
|
|
import com.gaotao.common.utils.Constant; |
|
|
|
import com.gaotao.common.utils.R; |
|
|
|
import com.gaotao.modules.sys.entity.SysUserEntity; |
|
|
|
import com.gaotao.modules.sys.entity.SysUserTokenEntity; |
|
|
|
import com.gaotao.modules.sys.form.SysLoginForm; |
|
|
|
import com.gaotao.modules.sys.service.SysCaptchaService; |
|
|
|
import com.gaotao.modules.sys.service.SysUserService; |
|
|
|
@ -113,7 +114,23 @@ public class SysLoginController extends AbstractController { |
|
|
|
} |
|
|
|
// 检查用户是否已登录(超级管理员跳过检查)- rqrq |
|
|
|
if(user.getUserId() != Constant.SUPER_ADMIN && sysUserTokenService.isUserLoggedIn(user.getUserId())){ |
|
|
|
return R.error("用户已经登录,请先退出后再登录"); |
|
|
|
// 检查请求中是否携带token - rqrq |
|
|
|
String oldToken = request.getHeader("token"); |
|
|
|
|
|
|
|
if(oldToken != null && !oldToken.isEmpty()) { |
|
|
|
// 验证前端token是否与数据库中的token一致 - rqrq |
|
|
|
SysUserTokenEntity tokenEntity = sysUserTokenService.getById(user.getUserId()); |
|
|
|
if(tokenEntity != null && tokenEntity.getToken().equals(oldToken)) { |
|
|
|
// Token一致,说明是真的多地登录 - rqrq |
|
|
|
return R.error("用户已经登录,请先退出后再登录"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 以下情况允许登录: |
|
|
|
// 1. 前端没有token(Cookie丢失或浏览器关闭后重新打开) |
|
|
|
// 2. 前端token与数据库不一致(可能是旧token) |
|
|
|
// 自动清理旧token,允许重新登录 - rqrq |
|
|
|
sysUserTokenService.forceLogout(user.getUserId()); |
|
|
|
} |
|
|
|
session.setAttribute("user", user); |
|
|
|
|
|
|
|
|