From 07b70a81dd94f638d31108c2029b44c26f6dde69 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期三, 15 一月 2025 09:58:42 +0800
Subject: [PATCH] 12.18
---
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 117 insertions(+), 0 deletions(-)
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
new file mode 100644
index 0000000..cb4a599
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/filter/AuthFilter.java
@@ -0,0 +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.AppUser;
+import com.ruoyi.common.core.constant.TokenConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
+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 userid = request.getHeader("user_id");
+ if(StringUtils.isEmpty(userid)){
+ filterChain.doFilter(servletRequest, servletResponse);
+ return;
+ }
+ String userType = request.getHeader("user_type");
+ //管理后台用户
+ 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)) {
+ AppUser appUser = appUserClient.getAppUserById(Long.valueOf(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(servletRequest, servletResponse);
+ }
+
+
+
+ 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