在企业内部实现To B端的服务接口调用,我们使用了自己的验证规则,需要借助SpringBoot的拦截器实现(To C端的可以考虑OAuth2)。
1、创建 Interceptor 类,实现 HandlerInterceptor 接口
@Component
@Slf4j
public class SignInterceptor implements HandlerInterceptor {
@Autowired
private SignService signService;
/**
* 方法执行前的拦截,实现处理器的预处理
* 返回值:true表示继续流程;false表示流程中断,不会继续调用其他的拦截器或处理器
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// TODO 这里写业务的验证逻辑
return true;
}
/**
* 方法执行后的回调方法
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
/**
* 整个请求处理完毕回调方法,即在视图渲染完毕时回调。
* 如性能监控中我们可以在此记录结束时间并输出消耗时间,
* 还可以进行一些资源清理,类似于try-catch-finally中的finally,
* 但仅调用处理器执行链中。
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
2、创建 MvcConfig 类, 继承 WebMvcConfigurationSupport 类
@Configuration
public class MvcInterceptorConfig extends WebMvcConfigurationSupport {
@Autowired
private SignInterceptor signInterceptor;
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(signInterceptor).addPathPatterns("/api/**"); // /api的请求加入sign拦截器
super.addInterceptors(registry);
}
}