我们在写后台考虑的,前端在请求的时候校验是否登陆,参数签名是否符合我们的需求,所以就需要设置拦截器在拦截器里面校验,以前的写法是直接使用HandlerInterceptor,但是会导致接口中无法拿到body里面的值,就需要处理传递过去,代码如下:
package top.yang.intelAI.interceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration //标注此文件为一个配置项,spring boot才会扫描到该配置。该注解类似于之前使用xml进行配置
public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Bean
public InitInterceptor myInterceptor(){
return new InitInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration registration = registry.addInterceptor(myInterceptor()); //对来自/user/** 这个链接来的请求进行拦截
registration.addPathPatterns("/**");
registration.excludePathPatterns("xx/xxx/xx");
registration.addPathPatterns("xx/xxx/xx"); //请求路径
}
}
package top.yang.intelAI.interceptor;
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 top.yang.intelAI.entity.LoginInfoVo;
import top.yang.intelAI.service.LoginService;
import top.yang.intelAI.util.ErrorCodeEnum;
import top.yang.intelAI.util.FormatReqResDataParamsUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
@Component
public class InitInterceptor implements HandlerInterceptor {
@Auto