From b0b94a084ed6c1a685caebb8dfb1a0d65fdd9ef6 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 16 七月 2024 10:57:42 +0800 Subject: [PATCH] 提交 --- server/service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java | 71 +++++++++++++++++++++++++---------- 1 files changed, 51 insertions(+), 20 deletions(-) diff --git a/server/service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java b/server/service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java index c827e52..00d3a0d 100644 --- a/server/service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java +++ b/server/service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java @@ -1,17 +1,18 @@ package com.doumee.config.Jwt; +import com.alibaba.fastjson.JSONObject; import com.doumee.biz.system.SystemDictDataBiz; -import com.doumee.config.annotation.ErpLoginRequired; +import com.doumee.config.annotation.UserLoginRequired; import com.doumee.config.annotation.LoginRequired; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.utils.Constants; import com.doumee.core.utils.redis.RedisUtil; import com.doumee.dao.business.model.Member; +import com.doumee.dao.business.model.Users; import io.jsonwebtoken.JwtException; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.core.RedisTemplate; @@ -25,7 +26,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.lang.reflect.Method; import java.util.Objects; @Configuration @@ -60,7 +60,7 @@ // Method method = handlerMethod.getMethod(); - // 鏈� @LoginRequired 娉ㄨВ锛岄渶瑕佺櫥褰曡璇� + // 鏈� @LoginRequired 娉ㄨВ锛岄渶瑕佺櫥褰曡璇� 瀹㈡埛绔娇鐢� if (beanType.isAnnotationPresent(LoginRequired.class) || handlerMethod.hasMethodAnnotation(LoginRequired.class)) { //鑾峰彇token String token = request.getHeader(JwtTokenUtil.HEADER_KEY); // 浠� http 璇锋眰澶翠腑鍙栧嚭 token @@ -69,26 +69,21 @@ } else { throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�"); } - } else if(beanType.isAnnotationPresent(ErpLoginRequired.class) || handlerMethod.hasMethodAnnotation(ErpLoginRequired.class)){ - try { + // 鏈� @UserLoginRequired 娉ㄨВ锛岄渶瑕佺櫥褰曡璇� 鍐呴儴浜哄憳浣跨敤 + } else if(beanType.isAnnotationPresent(UserLoginRequired.class) || handlerMethod.hasMethodAnnotation(UserLoginRequired.class)){ //ERP 涓氬姟娉ㄨВ String token = request.getHeader(JwtTokenUtil.HEADER_KEY); - String redisToken = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.ERP_TOKEN,String.class); - if(StringUtils.isBlank(redisToken)||!token.equals(redisToken)){ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎺堟潈宸插け鏁�"); + if (StringUtils.isNotBlank(token)) { + checkPersonnelLogin(request,response); + } else { + throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�"); } - request.setAttribute(JwtTokenUtil.HEADER_KEY,token); - } catch (IllegalArgumentException | JwtException e) { - throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鎺堟潈宸插け鏁�"); - } -// request.setAttribute("token", token); } return true; } }; - registry.addInterceptor(TokenInterceptor).addPathPatterns("/web/**","/visitbiz/**"); + registry.addInterceptor(TokenInterceptor).addPathPatterns("/web/**"); } - public Boolean checkLogin(HttpServletRequest request, HttpServletResponse response){ @@ -100,19 +95,55 @@ throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�"); } //鑾峰彇璐﹀彿ID - String memberId = JwtTokenUtil.getJwtPayLoad(token).getMemberId(); + Long memberId = JwtTokenUtil.getJwtPayLoad(token).getUserId(); + Integer userType = JwtTokenUtil.getJwtPayLoad(token).getUserType(); + if(!Constants.equalsInteger(userType,Constants.ZERO)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏃犺闂潈闄�"); + } Member member = dao.queryForObject(" select * from `member` where id = ? limit 1 ", new BeanPropertyRowMapper<>(Member.class),memberId ); if(Objects.isNull(member)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - if(member.getIsdeleted()== Constants.ONE){ + if(Constants.equalsInteger(member.getIsdeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳"); } - if(member.getStatus() != Constants.ZERO){ + if(!Constants.equalsInteger(member.getStatus(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳"); } request.setAttribute(JwtTokenUtil.UserId_Name, memberId); - request.setAttribute(JwtTokenUtil.MEMBER, member); + request.setAttribute(JwtTokenUtil.UserType, Constants.CUSTOMER); + return true; + } catch (IllegalArgumentException | JwtException e) { + throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�"); + } + } + + public Boolean checkPersonnelLogin(HttpServletRequest request, HttpServletResponse response){ + String token = request.getHeader(JwtTokenUtil.HEADER_KEY); + try { + //鍒ゆ柇Token鏄惁瓒呮椂 + boolean expiration = JwtTokenUtil.isTokenExpired(token); + if (expiration) { + throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�"); + } + //鑾峰彇璐﹀彿ID + Long userId = JwtTokenUtil.getJwtPayLoad(token).getUserId(); + Integer userType = JwtTokenUtil.getJwtPayLoad(token).getUserType(); + if(!Constants.equalsInteger(userType,Constants.ONE)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏃犺闂潈闄�"); + } + Users users = dao.queryForObject(" select * from `users` where id = ? limit 1 ", new BeanPropertyRowMapper<>(Users.class),userId); + if(Objects.isNull(users)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(Constants.equalsInteger(users.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳"); + } + if(!StringUtils.equals(users.getStatus(),Constants.ZERO+"")){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳"); + } + request.setAttribute(JwtTokenUtil.UserId_Name, userId); + request.setAttribute(JwtTokenUtil.UserType, Constants.BUSINESS); return true; } catch (IllegalArgumentException | JwtException e) { throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�"); -- Gitblit v1.9.3