实现类
package cn.com.yusys.yusp.mcp.interceptor; import cn.com.yusys.yusp.commons.session.context.UserContext; import cn.com.yusys.yusp.commons.session.user.User; import cn.com.yusys.yusp.commons.session.user.impl.UserInformation; import cn.com.yusys.yusp.commons.session.util.SessionUtils; import cn.com.yusys.yusp.commons.util.StringUtils; import cn.com.yusys.yusp.oca.dao.AdminSmRoleDao; import cn.com.yusys.yusp.oca.dao.AdminSmUserDao; import cn.com.yusys.yusp.oca.domain.vo.AdminSmRoleVo; import cn.com.yusys.yusp.oca.domain.vo.AdminSmUserDetailVo; import cn.com.yusys.yusp.oca.interceptor.RequestWrapper; import cn.com.yusys.yusp.oca.service.cache.CustomCacheService; import cn.com.yusys.yusp.oca.service.impl.SessionServiceImpl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; 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; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 拦截mcp请求,初始化用户信息 */ @Component public class McpInterceptor implements HandlerInterceptor { @Autowired private AdminSmUserDao adminSmUserDao; @Autowired private CustomCacheService customCacheService; @Autowired private SessionServiceImpl sessionServiceImpl; private final static Logger logger = LoggerFactory.getLogger(McpInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object Handler) throws IOException { RequestWrapper requestWrapper = new RequestWrapper(request); String bodyStr = requestWrapper.getBody(); JSONObject body = JSON.parseObject(bodyStr); String userId =""; String orgId=""; String roleId=""; if("POST".equals(requestWrapper.getMethod())){ //如果getParameter获取不到就从请求body里面获取 userId = requestWrapper.getParameter("userId") == null ? body.getString("userId"):requestWrapper.getParameter("userId"); orgId = requestWrapper.getParameter("orgId") == null ? body.getString("orgId"):requestWrapper.getParameter("orgId"); roleId = requestWrapper.getParameter("roleId") == null ? body.getString("roleId"):requestWrapper.getParameter("orgId"); }else{ userId = requestWrapper.getParameter("userId"); orgId = requestWrapper.getParameter("orgId"); roleId = requestWrapper.getParameter("roleId"); } JSONObject res = new JSONObject(); if(StringUtils.isEmpty(userId) || StringUtils.isEmpty(orgId) || StringUtils.isEmpty(roleId)){//userId必传 response.setContentType("application/json;charset=utf-8"); response.setCharacterEncoding("UTF-8"); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); res.put("status",-1); res.put("msg","缺少必填参数"); PrintWriter out = response.getWriter(); out.write(res.toString()); out.flush(); out.close(); return false; }else{ //customCacheService.clear("Session", "YUSP" + "-" + userId); AdminSmUserDetailVo userInfo = adminSmUserDao.getDetailById(userId); Map<String,String> map = new HashMap<>(); map.put("role_id",roleId); map.put("client_id","YUSP"); map.put("user_id",userId); map.put("login_code",userInfo.getLoginCode()); map.put("org_id",orgId); UserContext.addUserContexts(map); } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object Handler, ModelAndView modelAndView){ } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object Handler, Exception ex){ } }
配置类
package cn.com.yusys.yusp.mcp.config; import cn.com.yusys.yusp.mcp.interceptor.McpInterceptor; import cn.com.yusys.yusp.oca.interceptor.RequestFilter; 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.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import javax.servlet.Filter; @Configuration public class WebConfig implements WebMvcConfigurer { public static final int FIRST_ORDER = 10; @Autowired private McpInterceptor mcpInterceptor; @Override public void addInterceptors(InterceptorRegistry registry){ registry.addInterceptor(mcpInterceptor).addPathPatterns("/mcp/**").excludePathPatterns("/mcp/userCentre/listorgroles"); } @Bean public FilterRegistrationBean<Filter> RequestFilter() { FilterRegistrationBean<Filter> registration = new FilterRegistrationBean(); registration.setFilter(new RequestFilter()); registration.addUrlPatterns("/mcp/*"); registration.setName("requestFilter"); registration.setOrder(FIRST_ORDER - 11); return registration; } }
标签:拦截器,java,cn,org,yusp,yusys,使用,import,com From: https://www.cnblogs.com/xianz666/p/17273067.html