Browse Source

已登录提示

master
han\hanst 3 months ago
parent
commit
3420d330cb
  1. 12
      src/main/java/com/gaotao/modules/sys/controller/SysLoginController.java
  2. 7
      src/main/java/com/gaotao/modules/sys/service/SysUserTokenService.java
  3. 25
      src/main/java/com/gaotao/modules/sys/service/impl/SysUserTokenServiceImpl.java

12
src/main/java/com/gaotao/modules/sys/controller/SysLoginController.java

@ -1,4 +1,4 @@
package com.gaotao.modules.sys.controller;
@ -32,7 +32,7 @@ import java.util.Map;
/**
* 登录相关
*
*
*
*/
@RestController
public class SysLoginController extends AbstractController {
@ -42,7 +42,7 @@ public class SysLoginController extends AbstractController {
private SysUserTokenService sysUserTokenService;
@Autowired
private SysCaptchaService sysCaptchaService;
// 域控接口控制
@Value("${ldap-control.control-flag:false}")
private Boolean ldapFlag;
@ -97,6 +97,7 @@ public class SysLoginController extends AbstractController {
if(user.getStatus() == 0){
return R.error(getLanguageMsg(SysMsgConstant.OBJECT_ID_200208));
}
// 域控账号允许多设备登录不需要检查重复登录
}else {
user = sysUserService.queryByUserName(form.getUsername());
//账号不存在密码错误
@ -109,6 +110,9 @@ public class SysLoginController extends AbstractController {
return R.error(getLanguageMsg(SysMsgConstant.OBJECT_ID_200208));
}
}
if(sysUserTokenService.isUserLoggedIn(user.getUserId())){
return R.error("用户已经登录,请先退出后再登录");
}
session.setAttribute("user", user);
//生成token并保存到数据库
@ -126,5 +130,5 @@ public class SysLoginController extends AbstractController {
sysUserTokenService.logout(getUserId());
return R.ok(getLanguageMsg(SysMsgConstant.OBJECT_ID_200000));
}
}

7
src/main/java/com/gaotao/modules/sys/service/SysUserTokenService.java

@ -25,4 +25,11 @@ public interface SysUserTokenService extends IService<SysUserTokenEntity> {
*/
void logout(long userId);
/**
* 检查用户是否已登录token是否有效
* @param userId 用户ID
* @return true-已登录false-未登录
*/
boolean isUserLoggedIn(long userId);
}

25
src/main/java/com/gaotao/modules/sys/service/impl/SysUserTokenServiceImpl.java

@ -57,13 +57,24 @@ public class SysUserTokenServiceImpl extends ServiceImpl<SysUserTokenDao, SysUse
@Override
public void logout(long userId) {
//生成一个token
String token = TokenGenerator.generateValue();
//删除token记录
this.removeById(userId);
}
//修改token
SysUserTokenEntity tokenEntity = new SysUserTokenEntity();
tokenEntity.setUserId(userId);
tokenEntity.setToken(token);
this.updateById(tokenEntity);
@Override
public boolean isUserLoggedIn(long userId) {
//根据用户ID查询token
SysUserTokenEntity tokenEntity = this.getById(userId);
if(tokenEntity == null){
return false;
}
//检查token是否过期
Date now = new Date();
if(tokenEntity.getExpireTime() == null || tokenEntity.getExpireTime().before(now)){
return false;
}
return true;
}
}
Loading…
Cancel
Save