From 790c2ba4a0b46edf191e3bac84931f796bd42b8f Mon Sep 17 00:00:00 2001 From: zhangf <1603559716@qq.com> Date: 星期三, 24 七月 2024 09:02:49 +0800 Subject: [PATCH] 三方对接接口优化 --- ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/ThreeInstitutionInterceptor.java | 71 +++++++++++++++++++++++++++++++++++ 1 files changed, 71 insertions(+), 0 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/ThreeInstitutionInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/ThreeInstitutionInterceptor.java new file mode 100644 index 0000000..e9f965a --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/ThreeInstitutionInterceptor.java @@ -0,0 +1,71 @@ +package com.ruoyi.framework.interceptor; + + +import com.alibaba.fastjson2.JSON; +import com.ruoyi.common.constant.ResultConstants; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.model.InstitutionUser; +import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.exception.BusinessException; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.framework.security.context.ThreeInContextHolder; +import com.ruoyi.framework.web.service.TokenService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * 自定义三方对接数据校验 + */ +@Component +public class ThreeInstitutionInterceptor implements HandlerInterceptor { + + @Autowired + private TokenService tokenService; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception + { + InstitutionUser institutionUser = tokenService.getThreeInUser(request); + if (StringUtils.isNotNull(institutionUser)) + { + tokenService.verifyThreeInToken(institutionUser); + ThreeInContextHolder.setContext(institutionUser); + }else { + toJson(response,ResultConstants.ACCESS_TOKEN_OVERDUE.getCode(),ResultConstants.ACCESS_TOKEN_OVERDUE.getDesc()); + return false; + } + return true; + } + + private void toJson(HttpServletResponse response,int code, String msg) throws IOException { + + AjaxResult result = AjaxResult.error(code, msg); + // 设置编码格式 + response.setContentType("text/json;charset=utf-8"); + // 处理跨域问题 + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, OPTIONS"); + PrintWriter out = response.getWriter(); + out.write(JSON.toJSONString(result)); + out.flush(); + out.close(); + } + + + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + + // 清除threadLocal + ThreeInContextHolder.clearContext(); + } +} -- Gitblit v1.9.2