美文网首页
新增了拦截器没有效果

新增了拦截器没有效果

作者: 火山脚下 | 来源:发表于2020-03-20 18:04 被阅读0次

    没有效果的原因是只用了第1个步骤,后面加了第2个步骤以后就可以了

    要两个步骤:
    1
    package com.tsingning.safety.web.interceptor;

    import com.alibaba.fastjson.JSON;
    import com.tsingning.safety.common.bean.ResponseVo;
    import org.apache.commons.lang.StringUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.HandlerInterceptor;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;

    /**

    • @author zhouy
    • @ClassName: TokenInterceptor
    • @Description: token拦截器
    • @date 2019年4月15日 下午5:47:22
      */
      @Component
      public class TokenInterceptor implements HandlerInterceptor {

    // @Autowired
    // private CacheUtil cacheUtil;

    // @Autowired
    // private SysAdminMapper sysAdminMapper;

    private static final Logger logger = LoggerFactory.getLogger(TokenInterceptor.class);
    
    /**
     * @param cacheUtil
     */
    

    // public TokenInterceptor(CacheUtil cacheUtil) {
    // this.cacheUtil = cacheUtil;
    // }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
        try {
            
          /*  String url = request.getRequestURI();
            HashMap<String, Object> hashMap = new HashMap<>();
            Enumeration er = request.getHeaderNames();//获取请求头的所有name值 youq
            while (er.hasMoreElements()) {
                String name = (String) er.nextElement();
                String value = request.getHeader(name);
                hashMap.put(name, value);
            }
            logger.info("请求URL: {} header : {} ", url, hashMap);
    

    */
    String token = request.getHeader("Token");
    String userId = request.getHeader("User");
    String loginType = request.getHeader("LoginType"); //1=App端 2=pc端

            Integer user = null;
            try {
                user = Integer.parseInt(userId);
            } catch (NumberFormatException e) {
                user = null;
            }
    
            if (StringUtils.isEmpty(userId)) {
                returnJson(response, JSON.toJSONString(ResponseVo.getTokenErrorResult("参数User不能为空")));
                return false;
            }
            if (StringUtils.isEmpty(token)) {
                returnJson(response,JSON.toJSONString(ResponseVo.getTokenErrorResult("参数Token不能为空")));
                return false;
            }
    
            // 与缓存比对
            /*
            String result;
            if(MethodUtil.isNotEmpty(loginType)&&loginType.equals("2")){
                result = cacheUtil.isToken("PC",user, token);
            }else{
                result = cacheUtil.isToken("APP",user, token);
            }
            if(MethodUtil.isEmpty(result)){
                returnJson(response,JSON.toJSONString(ResponseVo.getTokenErrorResult("密码错误!请重新登录")));
                return false;
            }else{
                if(!result.equals(token)){
                    returnJson(response,JSON.toJSONString(ResponseVo.getTokenErrorResult("您的账号在其他客户端登录,请重新登录")));
                    return false;
                }
            }*/
            return true;
        } catch (Exception e) {
            logger.info("拦截器异常{}", e.toString());
            e.printStackTrace();
            returnJson(response,JSON.toJSONString(ResponseVo.getTokenErrorResult("请求失败,请稍后在使用!!!")));
            return false;
        }
    }
    private void returnJson(HttpServletResponse response, String json) throws Exception {
        PrintWriter writer = null;
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/json");
        try {
            writer = response.getWriter();
            writer.print(json);
    
        } catch (IOException e) {
            logger.error("response error", e);
        } finally {
            if (writer != null)
                writer.close();
        }
    }
    

    }

    2:
    package com.tsingning.safety.web.interceptor;

    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.web.cors.CorsConfiguration;
    import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
    import org.springframework.web.filter.CorsFilter;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

    import java.util.List;

    @Configuration
    //@PropertySource(value = "classpath:app.properties", encoding = "utf-8", ignoreResourceNotFound = true)
    //@ConfigurationProperties(prefix = "path.patterns", ignoreInvalidFields = true, ignoreUnknownFields = true)
    public class WebConfig implements WebMvcConfigurer {

    // @Autowired
    // private ApiNotLoginUrl apiNotLoginUrl;
    //
    // @Autowired
    // private CacheUtil cacheUtil;
    // @Autowired
    // private SysAdminMapper sysAdminMapper;

    // 放开接口
    private List<String> urls;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 添加拦截器,配置拦截地址
        registry.addInterceptor(new TokenInterceptor()).addPathPatterns("/**");
    

    // registry.addInterceptor(new TokenInterceptor(apiNotLoginUrl, cacheUtil,sysAdminMapper))
    // .addPathPatterns("/").excludePathPatterns(urls);
    //.addPathPatterns("/app/
    /.do");
    }
    /
    *
    * 跨越配置
    /
    @Bean
    public CorsFilter corsFilter() {
    CorsConfiguration config = new CorsConfiguration();
    // 设置允许跨域请求的域名
    config.addAllowedOrigin("
    ");
    // 设置运行访问的头部
    config.addAllowedHeader("");
    // 设置允许的方法
    config.addAllowedMethod("
    ");
    UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
    configSource.registerCorsConfiguration("/**", config);
    return new CorsFilter(configSource);
    }

    public List<String> getUrls() {
        return urls;
    }
    
    public void setUrls(List<String> urls) {
        this.urls = urls;
    }
    

    }

    相关文章

      网友评论

          本文标题:新增了拦截器没有效果

          本文链接:https://www.haomeiwen.com/subject/gmqsyhtx.html