总结:
1.用注解的话,第一次写接口时 需要增加很多注解,但是也是很方便,复制粘贴就可。后期维护灵活度非常大。
2.用写死的方式的话,拦截器越多,后期维护难度越大,针对/abc接口,可能 a拦截器排除,b拦截器也排除,c拦截器来拦截,那么需要写多次,后期及难维护。举例如下:
/** * 拼多多接口的拦截器配置 * 1.token * 2.shopid */ @Configuration public class PinduoduoWebMvcConfigurer_back extends CommonWebMvcConfigurer { @Autowired VerifyRsaTokenInterceptor verifyRsaTokenInterceptor; @Autowired VerifyShopIdInterceptor verifyShopIdInterceptor; @Autowired VerifyAesTokenInterceptor verifyAesTokenInterceptor; /** * 将拦截器注册到此项目中. */ @Override public void addInterceptors(InterceptorRegistry registry) { /* 1.验证token */ registry.addInterceptor(verifyRsaTokenInterceptor).addPathPatterns("/**") .excludePathPatterns("/buildToken") //这里需要写多次,拦截器越多,重复写的次数越多,后期越难维护 .excludePathPatterns("/importShopId") .excludePathPatterns("/PinduoduoShopStatusGet") .excludePathPatterns("/slb.html") /* 1.TaobaoJushitaJdpUsersGet 需要这个来统计活跃度。这个接口需要的安全度不高,delphi和guanli模块都有调用,完全开放。 2.TaobaoJushitaJdpUserDelete 需要用这个来定时关闭 数据推送,不可拦截。用下面的Aes128拦截器拦截。 */ .excludePathPatterns("/PddDdyPdpUsersGet") .excludePathPatterns("/PddDdyPdpUserDelete") .order(1); /* 2.验证shopId */ registry.addInterceptor(verifyShopIdInterceptor).addPathPatterns("/**") .excludePathPatterns("/buildToken") .excludePathPatterns("/importShopId") .excludePathPatterns("/PinduoduoShopStatusGet") .excludePathPatterns("/slb.html") /* 1.TaobaoJushitaJdpUsersGet 需要这个来统计活跃度。这个接口需要的安全度不高,delphi和guanli模块都有调用,完全开放。 2.TaobaoJushitaJdpUserDelete 需要用这个来定时关闭 数据推送,不可拦截。用下面的Aes128拦截器拦截。 */ .excludePathPatterns("/PddDdyPdpUsersGet") .excludePathPatterns("/PddDdyPdpUserDelete") .order(2); /* 3.有一些接口,无法验证颁发的token,为了安全,避免接口完全开放, 这类接口利用对称秘钥,验证固定字符串,只增加需要拦截的。多数不需要这个拦截器拦截。 TaobaoJushitaJdpUserDelete -- 场景为,需要 guanli 模块定时调用,其它模块基本用不到。 */ registry.addInterceptor(verifyAesTokenInterceptor).addPathPatterns("/PddDdyPdpUserDelete").order(3); }
@Configuration public class TaobaoWebMvcConfigurer extends CommonWebMvcConfigurer { @Autowired VerifyRsaTokenInterceptor verifyRsaTokenInterceptor; @Autowired VerifyShopIdInterceptor verifyShopIdInterceptor; @Autowired VerifyAesTokenInterceptor verifyAesTokenInterceptor; /** * 将拦截器注册到此项目中. */ @Override public void addInterceptors(InterceptorRegistry registry) { /* 1.验证token */ registry.addInterceptor(verifyRsaTokenInterceptor).addPathPatterns("/**") .excludePathPatterns("/buildToken") .excludePathPatterns("/importShopId") .excludePathPatterns("/TaobaoShopStatusGet") .excludePathPatterns("/slb.html") /* 1.TaobaoJushitaJdpUsersGet 需要这个来统计活跃度。这个接口需要的安全度不高,delphi和guanli模块都有调用,完全开放。 2.TaobaoJushitaJdpUserDelete 需要用这个来定时关闭 数据推送,不可拦截。用下面的Aes128拦截器拦截。 */ .excludePathPatterns("/TaobaoJushitaJdpUsersGet") .excludePathPatterns("/TaobaoJushitaJdpUserDelete") /* 御城河日志的,这个比较特殊,因为登录前,登录失败的需要对接日志,而此时并没有http协议头的token。所以这个接口放行。 */ .excludePathPatterns("/YchLogLogin") .order(1); /* 2.验证shopId */ registry.addInterceptor(verifyShopIdInterceptor).addPathPatterns("/**") .excludePathPatterns("/buildToken") .excludePathPatterns("/importShopId") .excludePathPatterns("/TaobaoShopStatusGet") .excludePathPatterns("/slb.html") /* 1.TaobaoJushitaJdpUsersGet 需要这个来统计活跃度。这个接口需要的安全度不高,delphi和guanli模块都有调用,完全开放。 2.TaobaoJushitaJdpUserDelete 需要用这个来定时关闭 数据推送,不可拦截。用下面的Aes128拦截器拦截。 */ .excludePathPatterns("/TaobaoJushitaJdpUsersGet") .excludePathPatterns("/TaobaoJushitaJdpUserDelete") /* 御城河日志相关的5个接口,不做shopId校验,让这5个接口通过。 */ .excludePathPatterns("/YchLogTop") .excludePathPatterns("/YchLogSql") .excludePathPatterns("/YchLogLogin") .excludePathPatterns("/YchLogOrder") .excludePathPatterns("/YchLogSendOrder") .order(2); /* 3.有一些接口,无法验证颁发的token,为了安全,避免接口完全开放, 这类接口利用对称秘钥,验证固定字符串,只增加需要拦截的。多数不需要这个拦截器拦截。 TaobaoJushitaJdpUserDelete -- 场景为,需要 guanli 模块定时调用,其它模块基本用不到。 */ registry.addInterceptor(verifyAesTokenInterceptor).addPathPatterns("/TaobaoJushitaJdpUserDelete").order(3); } }
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/13169010.html
分类:
SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人