From 67f377bbfbdd1bbac1f3d957506271e28d502961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=A8=E5=AD=90=E6=9D=8E=C2=B7De?= Date: Sun, 18 Jul 2021 14:33:10 +0800 Subject: [PATCH] update user log --- .../controller/dto/GaeaUserDto.java | 10 ++++ .../accessuser/dao/AccessUserMapper.java | 5 ++ .../accessuser/service/AccessUserService.java | 2 +- .../service/impl/AccessUserServiceImpl.java | 50 +++++++++++++------ 4 files changed, 50 insertions(+), 17 deletions(-) diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/dto/GaeaUserDto.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/dto/GaeaUserDto.java index adcf8965..02a9d194 100644 --- a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/dto/GaeaUserDto.java +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/dto/GaeaUserDto.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @ApiModel(value = "用户登录") @Data @@ -17,4 +18,13 @@ public class GaeaUserDto { @ApiModelProperty(value = "密码") @NotBlank private String password; + + /** 真实用户 */ + private String realName; + + /** 登录成功后的 */ + private String token; + + /** 用户所拥有的权限合集 */ + private List authorities; } diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/AccessUserMapper.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/AccessUserMapper.java index dbe2b90c..0d8aa185 100755 --- a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/AccessUserMapper.java +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/AccessUserMapper.java @@ -18,4 +18,9 @@ import java.util.List; @Mapper public interface AccessUserMapper extends GaeaBaseMapper { + /** 查询用户所拥有的所有角色下的权限 + * @param loginName + * @return + */ + List queryAuthoritiesByLoginName(@Param("loginName")String loginName); } \ No newline at end of file diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/AccessUserService.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/AccessUserService.java index 18dd2dfb..3a1bbb96 100755 --- a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/AccessUserService.java +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/AccessUserService.java @@ -40,5 +40,5 @@ public interface AccessUserService extends GaeaBaseService wrapper = Wrappers.lambdaQuery(); wrapper.eq(AccessUser::getLoginName, loginName); AccessUser accessUser = accessUserMapper.selectOne(wrapper); - if (null == accessUser || !accessUser.getPassword().equals(MD5Util.encrypt(password))) { + if (null == accessUser) { throw BusinessExceptionBuilder.build(ResponseCode.LOGIN_ERROR); } + // 2.密码错误 + if (!accessUser.getPassword().equals(MD5Util.encrypt(password))) { + throw BusinessExceptionBuilder.build(ResponseCode.USER_PASSWORD_ERROR); + } - Map map = Maps.newHashMap(); - - //将登录信息缓存,默认一小时 - if (cacheHelper.exist(loginName)) { - map.put("token", cacheHelper.stringGet(loginName)); - map.put("loginName", loginName); - } else { - String uuid = GaeaUtils.UUID(); - String token = jwtBean.createToken(loginName, uuid); - cacheHelper.stringSetExpire(loginName, token, 3600); - map.put("token", token); - map.put("loginName", loginName); + // 3.如果该用户登录未过期,这里允许一个用户在多个终端登录 + String tokenKey = String.format(BusinessConstant.GAEA_SECURITY_LOGIN_TOKEN, loginName); + String userKey = String.format(BusinessConstant.GAEA_SECURITY_LOGIN_USER, loginName); + String token = ""; + GaeaUserDto gaeaUser = new GaeaUserDto(); + if (cacheHelper.exist(tokenKey) && cacheHelper.exist(userKey)) { + token = cacheHelper.stringGet(tokenKey); + gaeaUser = JSONObject.parseObject(cacheHelper.stringGet(userKey), GaeaUserDto.class); + return gaeaUser; } - return map; + // 4.生成用户token + String uuid = GaeaUtils.UUID(); + token = jwtBean.createToken(loginName, uuid); + cacheHelper.stringSetExpire(tokenKey, token, 3600); + + // 5.缓存用户权限主信息 + List authorities = accessUserMapper.queryAuthoritiesByLoginName(loginName); + gaeaUser.setLoginName(loginName); + gaeaUser.setRealName(accessUser.getRealName()); + gaeaUser.setToken(token); + gaeaUser.setAuthorities(authorities); + String gaeaUserStr = JSONObject.toJSONString(gaeaUser); + cacheHelper.stringSetExpire(userKey, gaeaUserStr, 3600); + + return gaeaUser; } } \ No newline at end of file