接口不需要验证token

package com.club.common.interceptor;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.ResourceUtils;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.nio.charset.Charset;
import java.util.List;

@Configuration
public class InterceptiorConfiguration extends WebMvcConfigurationSupport {

    @Bean
    public HttpMessageConverter<String> responseBodyConverter() {
        return new StringHttpMessageConverter(Charset.forName("UTF-8"));
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(responseBodyConverter());
        addDefaultHttpMessageConverters(converters);
    }

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false);
    }

    @Autowired
    private CommonInterceptor commonInterceptor;
    @Autowired
    private LoginInterceptor loginInterceptor;
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(commonInterceptor)
                .addPathPatterns("/**");

        registry.addInterceptor(loginInterceptor)
                .addPathPatterns("/activity/collect")
                .addPathPatterns("/activity/join")
                .addPathPatterns("/news/collect")
                .addPathPatterns("/trend/**")
                .addPathPatterns("/trend")
                .addPathPatterns("/**")
                .excludePathPatterns("/home","/home/carousel","/home/hot/search/word"
                        ,"/area/spell/city/list","/area/hot/city/list"
                        ,"/wechat/applets/openid","/wechat/applets/decrypt"
                        ,"/trend/page/list","/trend/nearby/list","/trend/hotuser/list"
                        ,"/news/detail","/login/getVerificationCode/**"
                        ,"/activity/detail"
                        /*"/login","/login/**","/register","/register/**"
                        /*,"/trend/detail","/news","/news/detail"
                        ,"/activity/listPast","/activity/listConduct","/activity/detail","/activity/detail/v2"
                        ,"/service","/service/detail"
                        ,"/system/**","/config/**","/rest/**","/static/**","/error"
                        ,"/pay/notify/**","/trend/comment/detail","/news/read","/trend/trend/detail"//以下新增加 活动修改
                        ,"/classify","/commodity/detail","/commodity/exchange/detail","/commodity/exchange/success"
                        ,"/commodityOrder/list","/integral/list","/coils","/car/list","/merchant/list","/merchant/detail"
                        ,"/merchant/property","/merchant/services","/commodity","/merchant/businessCenter"
                        ,"/commodityOrder/join","/toPay/integral","/car/config","/model/getModels"
                        ,"/model/join","/integral/getUserList","/getClassifyList","/model/detail","/model/getProgramme"
                        ,"/coils/detail","/coils/joinCoils","/car/getTypeList","/model/getApplyList","/activity/register/lucky/list"
                        ,"/ttad/**","/system/sms/captcha","/cars","/cars/detail","/userFollow/**","/trend/page/list","/user/partner/price"
                        ,"/user/partner/inventory","/pay/wechat/info","/wechat/applets/openid","/wechat/applets/decrypt","/user/download","/popup","/sms/notify/report"*/
                )
        ;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations(
                        ResourceUtils.CLASSPATH_URL_PREFIX+"/static/");
        super.addResourceHandlers(registry);
    }
}
package com.club.common.interceptor;

import com.club.common.model.User;
import com.club.common.service.CommonUserService;
import com.club.common.util.JedisUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.mvc.WebContentInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@Component
public class CommonInterceptor extends WebContentInterceptor {

    private static final Logger logger = LoggerFactory.getLogger(CommonInterceptor.class);

    @Autowired
    CommonUserService userService;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)  {
            response.setHeader("Access-Control-Allow-Origin","*");
            response.setHeader("Content-Type","application/json;charset=UTF-8");
            response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
            response.setHeader("Access-Control-Allow-Headers","Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With,token");
            if(request.getAttribute("user")!=null){
                return true;
            }
            try{
                String token = request.getHeader("token");
                if(!StringUtils.isEmpty(token)){
                    Integer userId = null;
                    if(JedisUtils.exists(token)){
                        userId = Integer.valueOf(JedisUtils.get(token));
                    }
                    if(userId==null){
                        return true;
                    }
                    User user = userService.getById(userId);
                    if(user!=null){
                        request.setAttribute("user",user);
                        request.setAttribute("token",token);
                    }
                }
            }catch (Exception e){
                logger.error("",e);
            }

        return true;
    }

}

登陆拦截

package com.club.common.interceptor;

import com.club.common.constant.ClubConstant;
import com.club.common.model.HttpResult;
import com.club.common.model.User;
import com.club.common.service.CommonUserService;
import com.club.common.util.HttpUtils;
import com.club.common.util.JedisUtils;
import com.club.common.util.SignUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.mvc.WebContentInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;


@Component
public class LoginInterceptor extends WebContentInterceptor {

    private static final Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
//    @Autowired
//    private ClubCache cache;
    @Autowired
    CommonUserService userService;
//    @Autowireds
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        StringBuilder builder = new StringBuilder();
        try {
            if(request.getServletPath().equals("/trend")&&request.getMethod().toUpperCase().equals("GET")){
                return true;
            }
            String token = request.getHeader("token");
            logger.info("请求方法:{}",request.getRequestURI());
            Set<String> requestKeySet = request.getParameterMap().keySet();
            builder.append("请求参数: token = ");
            builder.append(token);
            builder.append(" ");
            for (String key:requestKeySet) {

                builder.append(key +" = ");
                builder.append(request.getParameter(key)+"  ");
            }
            logger.info(builder.toString());
            if(StringUtils.isEmpty(token)){

                //进行验证签名
                Map params = HttpUtils.getParameterMap(request);
                if(params.containsKey("sign")){
                    SortedMap<String, String> allParams = HttpUtils.getAllParams(request, params);
                    boolean isSigned = SignUtils.getSignUtil.verifySign(allParams);
                    if(isSigned){
                        return true;
                    }else {
                        new ObjectMapper().writeValue(response.getWriter(),HttpResult.newSignFail());
                        return false;
                    }

                }

                new ObjectMapper().writeValue(response.getWriter(),HttpResult.newNoLogin());
                return false;
            }

//            Integer userId = cache.getUserByToken(token);
            Integer userId = null;
            if(JedisUtils.exists(token)){
                userId = Integer.valueOf(JedisUtils.get(token));
            }
            logger.info("userId = {}",userId);
            if(userId==null){
                new ObjectMapper().writeValue(response.getWriter(),HttpResult.newNoLogin());
                return false;
            }
            User user = userService.getById(userId);
            if(user.getStatus()!=Integer.parseInt(ClubConstant.STR_ONE)){
                JedisUtils.del(token);
                return false;
            }
            if(user==null){
                new ObjectMapper().writeValue(response.getWriter(),HttpResult.newNoLogin());
                return false;
            }
            request.setAttribute("user",user);
            request.setAttribute("token",token);
        } catch (Exception e) {
            e.printStackTrace();
        }
//        finally {
//            logService.insert(request.getRequestURI(),builder.toString()); //请求日志保存
//        }

        return true;
    }



}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值