首页 > 编程语言 >java中拦截器的使用

java中拦截器的使用

时间:2023-03-30 16:00:13浏览次数:34  
标签:拦截器 java cn org yusp yusys 使用 import com

实现类

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

相关文章