From 983bdb5b89932b38d08a11ad1eed6ea89d1597e1 Mon Sep 17 00:00:00 2001 From: kongzy <kongzy> Date: 星期一, 29 一月 2024 10:07:31 +0800 Subject: [PATCH] 更新 --- assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java | 21 +++++++++++++++++++-- 1 files changed, 19 insertions(+), 2 deletions(-) diff --git a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java index 31cf00c..ab85786 100644 --- a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java +++ b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; @Component @@ -25,6 +26,8 @@ private SysPasswordService passwordService; @Autowired private RedisUtils redisUtils; + @Autowired + private HttpServletRequest request; public SysUser login(String username, String password) { SysUser sysUser=sysUserService.getUserByUsernamePhone(username); @@ -37,6 +40,16 @@ public void validUser(SysUser sysUser){ if(sysUser==null) { throw new AuthenticationException("用户不存在"); + } + String uri=request.getRequestURI(); + if(uri.startsWith("/api/system")){ + if(UserIdentityEnum.EXPERT.getCode().equals(sysUser.getIdentity())){ + throw new AuthenticationException("专家用户无权登录后台"); + } + }else if(uri.startsWith("/api/app/")){ + if(!UserIdentityEnum.EXPERT.getCode().equals(sysUser.getIdentity())){ + throw new AuthenticationException("只有专家用户才能登录APP"); + } } if(UserStatusEnum.DELETED.getCode().equals(sysUser.getDelFlag())){ throw new AuthenticationException("用户已被删除"); @@ -52,14 +65,18 @@ } public SysUser validJwtToken(String jwtToken){ + String username= JwtTokenUtil.getUsername(jwtToken); if(StringUtils.isEmpty(username)){ throw new AuthenticationException("token非法无效!"); } SysUser sysUser=sysUserService.getUserByUsernamePhone(username); validUser(sysUser); + if(!JwtTokenUtil.verify(jwtToken,username,sysUser.getPassword())){ + throw new AuthenticationException("token非法无效!"); + } if(!jwtTokenRefresh(jwtToken,username,sysUser.getPassword())){ - throw new AuthenticationException("Token失效,请重新登录!"); + throw new AuthenticationException("Token已失效,请重新登录!"); } // setRolePermission(sysUser); return sysUser; @@ -84,7 +101,7 @@ String cacheToken= (String) redisUtils.get(tokenKey); if(StringUtils.isNotEmpty(cacheToken)){ // 校验token有效性 - if(!JwtTokenUtil.verify(cacheToken,username,passWord)){ + if(!JwtTokenUtil.isNeedUpdate(cacheToken,username,passWord)){ String newToken=JwtTokenUtil.sign(username,passWord); // 设置超时时间 redisUtils.set(tokenKey,newToken); -- Gitblit v1.9.2