From 3f2d9bb3cfd67d61c965c7c5345c40d3e4271a09 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 23 八月 2024 14:33:17 +0800 Subject: [PATCH] 合并代码 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java | 236 ++++++------ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java | 234 ++++++------ ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java | 8 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java | 245 +++++++------ ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java | 16 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/IgnoreWhiteProperties.java | 31 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java | 234 ++++++------ 8 files changed, 525 insertions(+), 481 deletions(-) diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java index 435cb6e..5d3ad86 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java @@ -195,6 +195,14 @@ } } + public <T> void setCacheMap(final String key, final Map<String, T> dataMap, long timeout) + { + if (dataMap != null) { + redisTemplate.opsForHash().putAll(key, dataMap); + redisTemplate.expire(key, timeout, TimeUnit.SECONDS); + } + } + /** * 获得缓存的Map * diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java index 8128e68..1e5df74 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java @@ -39,7 +39,7 @@ // 排除过滤的 uri 地址,nacos自行添加 @Autowired private IgnoreWhiteProperties ignoreWhite; - + @Autowired private RedisService redisService; @@ -98,7 +98,7 @@ } private Mono<Void> unauthorizedResponse(ServerWebExchange exchange, String msg) { - log.error("[鉴权异常处理]请求路径:{}", exchange.getRequest().getPath()); + log.error("[鉴权异常处理]请求路径:{}", exchange.getRequest().getPath() + "\n" + msg); return ServletUtils.webFluxResponseWriter(exchange.getResponse(), msg, HttpStatus.UNAUTHORIZED); } @@ -144,7 +144,7 @@ if(null == cacheMap){ cacheMap = new HashMap<>(); cacheMap.put(url, timestamp); - redisService.setCacheMap(client, cacheMap); + redisService.setCacheMap(client, cacheMap, 5L); }else{ Object o = cacheMap.get(url); if(null == o){ @@ -159,7 +159,7 @@ cacheMap.put(url, timestamp); } } - redisService.setCacheMap(client, cacheMap); + redisService.setCacheMap(client, cacheMap, 5L); } } @@ -179,14 +179,8 @@ if (claims == null) { throw new RuntimeException("令牌已过期或验证不正确!"); } -// String userkey = JwtUtils.getUserKey(claims); -// boolean islogin = redisService.hasKey(getTokenKey(userkey)); -// if (!islogin) { -// throw new RuntimeException("登录状态已过期"); -// } String userid = JwtUtils.getUserId(claims); - String username = JwtUtils.getUserName(claims); - if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) { + if (StringUtils.isEmpty(userid)) { throw new RuntimeException("令牌验证失败"); } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java index 2793752..c501425 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/AuthFilter.java @@ -1,117 +1,128 @@ -package com.ruoyi.account.filter; - -import com.alibaba.fastjson.JSON; -import com.ruoyi.account.api.feignClient.AppUserClient; -import com.ruoyi.account.api.model.TAppUser; -import com.ruoyi.common.core.constant.TokenConstants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.JwtUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.system.api.domain.SysUser; -import com.ruoyi.system.api.feignClient.SysUserClient; -import io.jsonwebtoken.Claims; -import org.apache.logging.log4j.core.config.Order; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Lazy; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * @author zhibing.pu - * @Date 2024/8/23 11:22 - */ -@Order(-200) -@Component -public class AuthFilter implements Filter { - private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); - - @Lazy - @Resource - private AppUserClient appUserClient; - - @Lazy - @Resource - private SysUserClient sysUserClient; - - - @Override - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - HttpServletRequest request = (HttpServletRequest) servletRequest; - HttpServletResponse response = (HttpServletResponse) servletResponse; - String token = getToken(request); - Claims claims = JwtUtils.parseToken(token); - String userid = JwtUtils.getUserId(claims); - String userType = JwtUtils.getUserType(claims); - //管理后台用户 - if ("system".equals(userType)) { - SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); - if(null == sysUser || "2".equals(sysUser.getDelFlag())){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"无效的账户"); - return; - } - if("1".equals(sysUser.getStatus())){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); - return; - } - } - //小程序用户 - if ("applet".equals(userType)) { - TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData(); - if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"无效的账户"); - return; - } - if(2 == appUser.getStatus()){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); - return; - } - } - filterChain.doFilter(request, response); - } - - - - private void unauthorizedResponse(HttpServletResponse response, String msg) { - response.setStatus(HttpStatus.OK.value()); - response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); - PrintWriter writer = null; - try { - writer = response.getWriter(); - } catch (IOException e) { - throw new RuntimeException(e); - } - writer.println(JSON.toJSONString(R.fail(msg))); - writer.flush(); - writer.close(); - } - - - - /** - * 获取请求token - */ - private String getToken(HttpServletRequest request) { - String token = request.getHeader(TokenConstants.AUTHENTICATION); - // 如果前端设置了令牌前缀,则裁剪掉前缀 - if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { - token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); - } - return token; - } - - -} +//package com.ruoyi.account.filter; +// +//import com.alibaba.fastjson.JSON; +//import com.ruoyi.account.api.feignClient.AppUserClient; +//import com.ruoyi.account.api.model.TAppUser; +//import com.ruoyi.account.service.TAppUserService; +//import com.ruoyi.common.core.constant.TokenConstants; +//import com.ruoyi.common.core.domain.R; +//import com.ruoyi.common.core.utils.JwtUtils; +//import com.ruoyi.common.core.utils.StringUtils; +//import com.ruoyi.system.api.domain.SysUser; +//import com.ruoyi.system.api.feignClient.SysUserClient; +//import io.jsonwebtoken.Claims; +//import org.apache.logging.log4j.core.config.Order; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.context.annotation.Lazy; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.stereotype.Component; +// +//import javax.annotation.Resource; +//import javax.servlet.*; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import java.io.IOException; +//import java.io.PrintWriter; +// +///** +// * @author zhibing.pu +// * @Date 2024/8/23 11:22 +// */ +//@Order(-200) +//@Component +//public class AuthFilter implements Filter { +// private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); +// @Lazy +// @Resource +// private TAppUserService appUserService; +// +// @Lazy +// @Resource +// private SysUserClient sysUserClient; +// +// @Lazy +// @Autowired +// private IgnoreWhiteProperties ignoreWhite; +// +// +// @Override +// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { +// HttpServletRequest request = (HttpServletRequest) servletRequest; +// HttpServletResponse response = (HttpServletResponse) servletResponse; +// String url = request.getRequestURI(); +// // 跳过不需要验证的路径 +// if (StringUtils.matches(url, ignoreWhite.getWhites())) { +// filterChain.doFilter(request, response); +// return; +// } +// String token = getToken(request); +// Claims claims = JwtUtils.parseToken(token); +// String userid = JwtUtils.getUserId(claims); +// String userType = JwtUtils.getUserType(claims); +// //管理后台用户 +// if ("system".equals(userType)) { +// SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); +// if(null == sysUser || "2".equals(sysUser.getDelFlag())){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"无效的账户"); +// return; +// } +// if("1".equals(sysUser.getStatus())){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); +// return; +// } +// } +// //小程序用户 +// if ("applet".equals(userType)) { +// TAppUser appUser = appUserService.getById(userid); +// if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"无效的账户"); +// return; +// } +// if(2 == appUser.getStatus()){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); +// return; +// } +// } +// filterChain.doFilter(request, response); +// } +// +// +// +// private void unauthorizedResponse(HttpServletResponse response, String msg) { +// response.setStatus(HttpStatus.OK.value()); +// response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); +// PrintWriter writer = null; +// try { +// writer = response.getWriter(); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// writer.println(JSON.toJSONString(R.fail(msg))); +// writer.flush(); +// writer.close(); +// } +// +// +// +// /** +// * 获取请求token +// */ +// private String getToken(HttpServletRequest request) { +// String token = request.getHeader(TokenConstants.AUTHENTICATION); +// // 如果前端设置了令牌前缀,则裁剪掉前缀 +// if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { +// token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); +// } +// return token; +// } +// +// +//} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/IgnoreWhiteProperties.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/IgnoreWhiteProperties.java new file mode 100644 index 0000000..a89b9f3 --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/filter/IgnoreWhiteProperties.java @@ -0,0 +1,31 @@ +package com.ruoyi.account.filter; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +import java.util.ArrayList; +import java.util.List; + +/** + * 放行白名单配置 + * + * @author ruoyi + */ +@Configuration +@RefreshScope +@ConfigurationProperties(prefix = "security.ignore") +public class IgnoreWhiteProperties { + /** + * 放行白名单配置,网关不校验此处的白名单 + */ + private List<String> whites = new ArrayList<>(); + + public List<String> getWhites() { + return whites; + } + + public void setWhites(List<String> whites) { + this.whites = whites; + } +} diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java index 2ef3e20..6f3ca9e 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/filter/AuthFilter.java @@ -1,118 +1,118 @@ -package com.ruoyi.chargingPile.filter; - -import com.alibaba.fastjson.JSON; -import com.ruoyi.account.api.feignClient.AppUserClient; -import com.ruoyi.account.api.model.TAppUser; -import com.ruoyi.common.core.constant.TokenConstants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.JwtUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.system.api.domain.SysUser; -import com.ruoyi.system.api.feignClient.SysUserClient; -import io.jsonwebtoken.Claims; -import org.apache.logging.log4j.core.config.Order; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Lazy; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; - -/** - * @author zhibing.pu - * @Date 2024/8/23 11:22 - */ -@Order(-200) -@Component -public class AuthFilter implements Filter { - private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); - - @Lazy - @Resource - private AppUserClient appUserClient; - - @Lazy - @Resource - private SysUserClient sysUserClient; - - - @Override - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - HttpServletRequest request = (HttpServletRequest) servletRequest; - HttpServletResponse response = (HttpServletResponse) servletResponse; - String token = getToken(request); - Claims claims = JwtUtils.parseToken(token); - String userid = JwtUtils.getUserId(claims); - String userType = JwtUtils.getUserType(claims); - //管理后台用户 - if ("system".equals(userType)) { - SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); - if(null == sysUser || "2".equals(sysUser.getDelFlag())){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"无效的账户"); - return; - } - if("1".equals(sysUser.getStatus())){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); - return; - } - } - //小程序用户 - if ("applet".equals(userType)) { - TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData(); - if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"无效的账户"); - return; - } - if(2 == appUser.getStatus()){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); - return; - } - } - filterChain.doFilter(request, response); - } - - - - private void unauthorizedResponse(HttpServletResponse response, String msg) { - response.setStatus(HttpStatus.OK.value()); - response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); - PrintWriter writer = null; - try { - writer = response.getWriter(); - } catch (IOException e) { - throw new RuntimeException(e); - } - writer.println(JSON.toJSONString(R.fail(msg))); - writer.flush(); - writer.close(); - } - - - - /** - * 获取请求token - */ - private String getToken(HttpServletRequest request) { - String token = request.getHeader(TokenConstants.AUTHENTICATION); - // 如果前端设置了令牌前缀,则裁剪掉前缀 - if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { - token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); - } - return token; - } - - -} +//package com.ruoyi.chargingPile.filter; +// +//import com.alibaba.fastjson.JSON; +//import com.ruoyi.account.api.feignClient.AppUserClient; +//import com.ruoyi.account.api.model.TAppUser; +//import com.ruoyi.common.core.constant.TokenConstants; +//import com.ruoyi.common.core.domain.R; +//import com.ruoyi.common.core.utils.JwtUtils; +//import com.ruoyi.common.core.utils.StringUtils; +//import com.ruoyi.system.api.domain.SysUser; +//import com.ruoyi.system.api.feignClient.SysUserClient; +//import io.jsonwebtoken.Claims; +//import org.apache.logging.log4j.core.config.Order; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.context.annotation.Lazy; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.stereotype.Component; +// +//import javax.annotation.Resource; +//import javax.servlet.*; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import java.io.IOException; +//import java.io.PrintWriter; +//import java.io.UnsupportedEncodingException; +// +///** +// * @author zhibing.pu +// * @Date 2024/8/23 11:22 +// */ +//@Order(-200) +//@Component +//public class AuthFilter implements Filter { +// private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); +// +// @Lazy +// @Resource +// private AppUserClient appUserClient; +// +// @Lazy +// @Resource +// private SysUserClient sysUserClient; +// +// +// @Override +// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { +// HttpServletRequest request = (HttpServletRequest) servletRequest; +// HttpServletResponse response = (HttpServletResponse) servletResponse; +// String token = getToken(request); +// Claims claims = JwtUtils.parseToken(token); +// String userid = JwtUtils.getUserId(claims); +// String userType = JwtUtils.getUserType(claims); +// //管理后台用户 +// if ("system".equals(userType)) { +// SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); +// if(null == sysUser || "2".equals(sysUser.getDelFlag())){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"无效的账户"); +// return; +// } +// if("1".equals(sysUser.getStatus())){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); +// return; +// } +// } +// //小程序用户 +// if ("applet".equals(userType)) { +// TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData(); +// if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"无效的账户"); +// return; +// } +// if(2 == appUser.getStatus()){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); +// return; +// } +// } +// filterChain.doFilter(request, response); +// } +// +// +// +// private void unauthorizedResponse(HttpServletResponse response, String msg) { +// response.setStatus(HttpStatus.OK.value()); +// response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); +// PrintWriter writer = null; +// try { +// writer = response.getWriter(); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// writer.println(JSON.toJSONString(R.fail(msg))); +// writer.flush(); +// writer.close(); +// } +// +// +// +// /** +// * 获取请求token +// */ +// private String getToken(HttpServletRequest request) { +// String token = request.getHeader(TokenConstants.AUTHENTICATION); +// // 如果前端设置了令牌前缀,则裁剪掉前缀 +// if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { +// token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); +// } +// return token; +// } +// +// +//} diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java index db9addd..d103791 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java @@ -1,117 +1,117 @@ -package com.ruoyi.order.filter; - -import com.alibaba.fastjson.JSON; -import com.ruoyi.account.api.feignClient.AppUserClient; -import com.ruoyi.account.api.model.TAppUser; -import com.ruoyi.common.core.constant.TokenConstants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.JwtUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.system.api.domain.SysUser; -import com.ruoyi.system.api.feignClient.SysUserClient; -import io.jsonwebtoken.Claims; -import org.apache.logging.log4j.core.config.Order; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Lazy; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * @author zhibing.pu - * @Date 2024/8/23 11:22 - */ -@Order(-200) -@Component -public class AuthFilter implements Filter { - private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); - - @Lazy - @Resource - private AppUserClient appUserClient; - - @Lazy - @Resource - private SysUserClient sysUserClient; - - - @Override - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - HttpServletRequest request = (HttpServletRequest) servletRequest; - HttpServletResponse response = (HttpServletResponse) servletResponse; - String token = getToken(request); - Claims claims = JwtUtils.parseToken(token); - String userid = JwtUtils.getUserId(claims); - String userType = JwtUtils.getUserType(claims); - //管理后台用户 - if ("system".equals(userType)) { - SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); - if(null == sysUser || "2".equals(sysUser.getDelFlag())){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"无效的账户"); - return; - } - if("1".equals(sysUser.getStatus())){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); - return; - } - } - //小程序用户 - if ("applet".equals(userType)) { - TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData(); - if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"无效的账户"); - return; - } - if(2 == appUser.getStatus()){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); - return; - } - } - filterChain.doFilter(request, response); - } - - - - private void unauthorizedResponse(HttpServletResponse response, String msg) { - response.setStatus(HttpStatus.OK.value()); - response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); - PrintWriter writer = null; - try { - writer = response.getWriter(); - } catch (IOException e) { - throw new RuntimeException(e); - } - writer.println(JSON.toJSONString(R.fail(msg))); - writer.flush(); - writer.close(); - } - - - - /** - * 获取请求token - */ - private String getToken(HttpServletRequest request) { - String token = request.getHeader(TokenConstants.AUTHENTICATION); - // 如果前端设置了令牌前缀,则裁剪掉前缀 - if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { - token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); - } - return token; - } - - -} +//package com.ruoyi.order.filter; +// +//import com.alibaba.fastjson.JSON; +//import com.ruoyi.account.api.feignClient.AppUserClient; +//import com.ruoyi.account.api.model.TAppUser; +//import com.ruoyi.common.core.constant.TokenConstants; +//import com.ruoyi.common.core.domain.R; +//import com.ruoyi.common.core.utils.JwtUtils; +//import com.ruoyi.common.core.utils.StringUtils; +//import com.ruoyi.system.api.domain.SysUser; +//import com.ruoyi.system.api.feignClient.SysUserClient; +//import io.jsonwebtoken.Claims; +//import org.apache.logging.log4j.core.config.Order; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.context.annotation.Lazy; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.stereotype.Component; +// +//import javax.annotation.Resource; +//import javax.servlet.*; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import java.io.IOException; +//import java.io.PrintWriter; +// +///** +// * @author zhibing.pu +// * @Date 2024/8/23 11:22 +// */ +//@Order(-200) +//@Component +//public class AuthFilter implements Filter { +// private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); +// +// @Lazy +// @Resource +// private AppUserClient appUserClient; +// +// @Lazy +// @Resource +// private SysUserClient sysUserClient; +// +// +// @Override +// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { +// HttpServletRequest request = (HttpServletRequest) servletRequest; +// HttpServletResponse response = (HttpServletResponse) servletResponse; +// String token = getToken(request); +// Claims claims = JwtUtils.parseToken(token); +// String userid = JwtUtils.getUserId(claims); +// String userType = JwtUtils.getUserType(claims); +// //管理后台用户 +// if ("system".equals(userType)) { +// SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); +// if(null == sysUser || "2".equals(sysUser.getDelFlag())){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"无效的账户"); +// return; +// } +// if("1".equals(sysUser.getStatus())){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); +// return; +// } +// } +// //小程序用户 +// if ("applet".equals(userType)) { +// TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData(); +// if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"无效的账户"); +// return; +// } +// if(2 == appUser.getStatus()){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); +// return; +// } +// } +// filterChain.doFilter(request, response); +// } +// +// +// +// private void unauthorizedResponse(HttpServletResponse response, String msg) { +// response.setStatus(HttpStatus.OK.value()); +// response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); +// PrintWriter writer = null; +// try { +// writer = response.getWriter(); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// writer.println(JSON.toJSONString(R.fail(msg))); +// writer.flush(); +// writer.close(); +// } +// +// +// +// /** +// * 获取请求token +// */ +// private String getToken(HttpServletRequest request) { +// String token = request.getHeader(TokenConstants.AUTHENTICATION); +// // 如果前端设置了令牌前缀,则裁剪掉前缀 +// if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { +// token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); +// } +// return token; +// } +// +// +//} diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java index 1797317..5192c06 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java @@ -130,7 +130,7 @@ .last("LIMIT 1"))); case 2: return R.ok(vipService.getOne(Wrappers.lambdaQuery(TVip.class) - .eq(TVip::getReveal,1) + .eq(TVip::getReveal,1).eq(TVip::getType,1) .orderByAsc(TVip::getMonthlyCard) .last("LIMIT 1"))); default: diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java index 7790a23..89e8832 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java @@ -1,117 +1,117 @@ -package com.ruoyi.other.filter; - -import com.alibaba.fastjson.JSON; -import com.ruoyi.account.api.feignClient.AppUserClient; -import com.ruoyi.account.api.model.TAppUser; -import com.ruoyi.common.core.constant.TokenConstants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.JwtUtils; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.system.api.domain.SysUser; -import com.ruoyi.system.api.feignClient.SysUserClient; -import io.jsonwebtoken.Claims; -import org.apache.logging.log4j.core.config.Order; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Lazy; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * @author zhibing.pu - * @Date 2024/8/23 11:22 - */ -@Order(-200) -@Component -public class AuthFilter implements Filter { - private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); - - @Lazy - @Resource - private AppUserClient appUserClient; - - @Lazy - @Resource - private SysUserClient sysUserClient; - - - @Override - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - HttpServletRequest request = (HttpServletRequest) servletRequest; - HttpServletResponse response = (HttpServletResponse) servletResponse; - String token = getToken(request); - Claims claims = JwtUtils.parseToken(token); - String userid = JwtUtils.getUserId(claims); - String userType = JwtUtils.getUserType(claims); - //管理后台用户 - if ("system".equals(userType)) { - SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); - if(null == sysUser || "2".equals(sysUser.getDelFlag())){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"无效的账户"); - return; - } - if("1".equals(sysUser.getStatus())){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); - return; - } - } - //小程序用户 - if ("applet".equals(userType)) { - TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData(); - if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"无效的账户"); - return; - } - if(2 == appUser.getStatus()){ - log.error("[账户异常处理]请求账户id:{}", userid); - unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); - return; - } - } - filterChain.doFilter(request, response); - } - - - - private void unauthorizedResponse(HttpServletResponse response, String msg) { - response.setStatus(HttpStatus.OK.value()); - response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); - PrintWriter writer = null; - try { - writer = response.getWriter(); - } catch (IOException e) { - throw new RuntimeException(e); - } - writer.println(JSON.toJSONString(R.fail(msg))); - writer.flush(); - writer.close(); - } - - - - /** - * 获取请求token - */ - private String getToken(HttpServletRequest request) { - String token = request.getHeader(TokenConstants.AUTHENTICATION); - // 如果前端设置了令牌前缀,则裁剪掉前缀 - if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { - token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); - } - return token; - } - - -} +//package com.ruoyi.other.filter; +// +//import com.alibaba.fastjson.JSON; +//import com.ruoyi.account.api.feignClient.AppUserClient; +//import com.ruoyi.account.api.model.TAppUser; +//import com.ruoyi.common.core.constant.TokenConstants; +//import com.ruoyi.common.core.domain.R; +//import com.ruoyi.common.core.utils.JwtUtils; +//import com.ruoyi.common.core.utils.StringUtils; +//import com.ruoyi.system.api.domain.SysUser; +//import com.ruoyi.system.api.feignClient.SysUserClient; +//import io.jsonwebtoken.Claims; +//import org.apache.logging.log4j.core.config.Order; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.context.annotation.Lazy; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.stereotype.Component; +// +//import javax.annotation.Resource; +//import javax.servlet.*; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import java.io.IOException; +//import java.io.PrintWriter; +// +///** +// * @author zhibing.pu +// * @Date 2024/8/23 11:22 +// */ +//@Order(-200) +//@Component +//public class AuthFilter implements Filter { +// private static final Logger log = LoggerFactory.getLogger(AuthFilter.class); +// +// @Lazy +// @Resource +// private AppUserClient appUserClient; +// +// @Lazy +// @Resource +// private SysUserClient sysUserClient; +// +// +// @Override +// public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { +// HttpServletRequest request = (HttpServletRequest) servletRequest; +// HttpServletResponse response = (HttpServletResponse) servletResponse; +// String token = getToken(request); +// Claims claims = JwtUtils.parseToken(token); +// String userid = JwtUtils.getUserId(claims); +// String userType = JwtUtils.getUserType(claims); +// //管理后台用户 +// if ("system".equals(userType)) { +// SysUser sysUser = sysUserClient.getSysUser(Long.valueOf(userid)).getData(); +// if(null == sysUser || "2".equals(sysUser.getDelFlag())){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"无效的账户"); +// return; +// } +// if("1".equals(sysUser.getStatus())){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"账户已被停用,请联系系统管理员!"); +// return; +// } +// } +// //小程序用户 +// if ("applet".equals(userType)) { +// TAppUser appUser = appUserClient.getUserById(Long.valueOf(userid)).getData(); +// if(null == appUser || appUser.getDelFlag() || 3 == appUser.getStatus()){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"无效的账户"); +// return; +// } +// if(2 == appUser.getStatus()){ +// log.error("[账户异常处理]请求账户id:{}", userid); +// unauthorizedResponse(response,"账户已被冻结,请联系系统管理员!"); +// return; +// } +// } +// filterChain.doFilter(request, response); +// } +// +// +// +// private void unauthorizedResponse(HttpServletResponse response, String msg) { +// response.setStatus(HttpStatus.OK.value()); +// response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE); +// PrintWriter writer = null; +// try { +// writer = response.getWriter(); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// writer.println(JSON.toJSONString(R.fail(msg))); +// writer.flush(); +// writer.close(); +// } +// +// +// +// /** +// * 获取请求token +// */ +// private String getToken(HttpServletRequest request) { +// String token = request.getHeader(TokenConstants.AUTHENTICATION); +// // 如果前端设置了令牌前缀,则裁剪掉前缀 +// if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) { +// token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY); +// } +// return token; +// } +// +// +//} -- Gitblit v1.7.1