注解实现接口拦截功能
方式一
我们在Spring boot项目中时候,一般会采用token作为身份验证,这样也方便前端做免登录功能
- 一般方式:我们会自定义一个拦截器,继承WebMvcConfigurer类,重写addInterceptors方法,效果如下:
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 不需要拦截校验的url
String[] clientUserApiArrays = {
Constants.CLIENT_URI_V1 + "/users/token",
Constants.CLIENT_URI_V1 + "/users/we_chat_login"
};
registry.addInterceptor(clientUserApiInterceptor).addPathPatterns("/api/v*/client/**").excludePathPatterns(clientUserApiArrays);
}
}
将不用token验证的接口地址过滤掉,这样也是很不错的做法
- 第二种方式
采用注解的方式
- 先看下在代码中的应用,看看是不是你要的效果,不需要验证默认是不用加的
@ApiOperation(value = "获取推荐商户列表", notes = "获取推荐商户列表")
@GetMapping("/getMerchantList")
@UserToken
public BaseResult<List<MerchantVO>> getMerchantList() {
return BaseResult.success(iMerchantService.getMerchantList());
}
- 先定义两个注解用来区分需要token验证和不需要token验证
PassToken注解(对方法使用)
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface PassToken {
boolean required() default true;
}
UserToken注解(对方法使用)
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME