From aa4c518b6e8f356dfecdcaa6eb172d72b39a7ae5 Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Sat, 6 Aug 2022 20:45:52 +0800 Subject: [PATCH] =?UTF-8?q?=E9=89=B4=E6=9D=83=E9=80=BB=E8=BE=91=E6=9B=B4?= =?UTF-8?q?=E6=96=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/base/rest/constant/ExceptionConstant.java | 1 + .../base/rest/interceptor/BaseAuthInterceptor.java | 7 +++++++ .../asgc/neutrino/proxy/server/dal/UserTokenMapper.java | 7 +++++++ .../asgc/neutrino/proxy/server/dal/entity/UserDO.java | 4 ++++ .../asgc/neutrino/proxy/server/service/UserService.java | 9 ++++++--- 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/constant/ExceptionConstant.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/constant/ExceptionConstant.java index c716414b..52a6d440 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/constant/ExceptionConstant.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/constant/ExceptionConstant.java @@ -37,6 +37,7 @@ public enum ExceptionConstant { PARAMS_INVALID(2, "参数不正确"), PARAMS_NOT_NULL(3, "参数[%s]不能为空"), USER_NAME_OR_PASSWORD_ERROR(4, "用户名或密码错误"), + USER_DISBLE(5, "当前用户已被禁止登录"), SYSTEM_ERROR(500, "系统异常"), ; diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/interceptor/BaseAuthInterceptor.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/interceptor/BaseAuthInterceptor.java index 410c7fa4..ffbf176f 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/interceptor/BaseAuthInterceptor.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/interceptor/BaseAuthInterceptor.java @@ -28,6 +28,7 @@ import fun.asgc.neutrino.core.web.context.HttpRequestWrapper; import fun.asgc.neutrino.core.web.context.HttpResponseWrapper; import fun.asgc.neutrino.core.web.interceptor.HandlerInterceptor; import fun.asgc.neutrino.proxy.server.base.rest.*; +import fun.asgc.neutrino.proxy.server.base.rest.constant.EnableStatusEnum; import fun.asgc.neutrino.proxy.server.base.rest.constant.ExceptionConstant; import fun.asgc.neutrino.proxy.server.dal.entity.UserDO; import fun.asgc.neutrino.proxy.server.service.UserService; @@ -58,8 +59,14 @@ public class BaseAuthInterceptor implements HandlerInterceptor { if (null == userDO) { throw ServiceException.create(ExceptionConstant.USER_NOT_LOGIN); } + if (EnableStatusEnum.DISABLE.getStatus().equals(userDO.getEnable())) { + throw ServiceException.create(ExceptionConstant.USER_DISBLE); + } systemContext.setToken(authorize); systemContext.setUser(userDO); + + // token续期 + BeanManager.getBean(UserService.class).updateTokenExpirationTime(authorize); } return true; diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserTokenMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserTokenMapper.java index 8e5f6884..c7e4229c 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserTokenMapper.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserTokenMapper.java @@ -22,12 +22,16 @@ package fun.asgc.neutrino.proxy.server.dal; import fun.asgc.neutrino.core.annotation.Component; +import fun.asgc.neutrino.core.annotation.Param; import fun.asgc.neutrino.core.db.annotation.Delete; import fun.asgc.neutrino.core.db.annotation.Insert; import fun.asgc.neutrino.core.db.annotation.Select; +import fun.asgc.neutrino.core.db.annotation.Update; import fun.asgc.neutrino.core.db.mapper.SqlMapper; import fun.asgc.neutrino.proxy.server.dal.entity.UserTokenDO; +import java.util.Date; + /** * * @author: aoshiguchen @@ -60,4 +64,7 @@ public interface UserTokenMapper extends SqlMapper { */ @Delete("delete from user_token where token = ?") void deleteByToken(String token); + + @Update("update user_token set expiration_time = :expirationTime where token = :token") + void updateTokenExpirationTime(@Param("token") String token, @Param("expirationTime") Date expirationTime); } diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserDO.java index c8d1795c..c51eb48d 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserDO.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserDO.java @@ -51,6 +51,10 @@ public class UserDO { * 登录密码 */ private String loginPassword; + /** + * 是否禁用 + */ + private Integer enable; /** * 创建时间 */ diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java index 08d2bde2..852ff490 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java @@ -108,9 +108,12 @@ public class UserService { if (null == userTokenDO) { return null; } - UserDO userDO = userMapper.findById(userTokenDO.getUserId()); - // TODO 校验用户是否已被禁用 - return userDO; + return userMapper.findById(userTokenDO.getUserId()); } + public void updateTokenExpirationTime(String token) { + Date now = new Date(); + Date expirationTime = DateUtil.addDate(now, Calendar.HOUR, 1); + userTokenMapper.updateTokenExpirationTime(token, expirationTime); + } }