TokeMaager是一款基于Java开发的SprigBoot组件,用于管理自身平台以外的三方平台Toke。
TokeMaager将全场景的远程调用获取Toke抽象到TokeMaager接口中,通过调用指定的三方TokeAPI实现各类三方平台的Toke的管理。TokeMaager通过Redis的消息订阅特性实现了延时消息监听Toke生命周期过期时间,从而自动刷新Toke。确保在高并发请求下,用户不会调用具体的三方接口实时获取Toke。TokeMaager默认实现了WEIXIN微信平台的accessToke(非用户授权码toke)TokeMaager原理图如下所示: TokeMaager特性多环境Toke共享 例如:调试微信,获取appid+secrt换取accessToke,在开发环境和测试环境共用或不共用appid的情况下,可配置Toke共享。
自动刷新accessToke 支持基于Oauth2协议的刷新Toke机制,无需干预自动刷新,最佳的管理方式,提高接口响应速度。
多级缓存(待实现) 支持本地缓存与远程缓存。本地缓存JVM级别的,远程缓存基于Redis。提高Toke的访问速度,防止Redis击穿雪崩。本地缓存的生命周期动态管理。
可扩展 支持扩展现有的API实现,能够支持除了微信以外的其他平台。采用自动装配技术,实例动态注入到Sprig容器中。
支持请求日志拦截 通过RestTempalte拦截器实现了请求日志拦截,默认实现了请求Slf4j的ifo级别日志。可以自定义配置个性化的拦截实现。
快速开始准备好Redis-server,服务IP与端口还有密码服务:127.0.0.1:6379密码:123456如果您没有Redis服务环境,推荐使用Docker部署测试。在您的项目中pom.xml加入mave依赖:<!--开发者:marker三方Toke管理器--><depedecy><groupId>com.wuweiit</groupId><artifactId>toke-maager</artifactId><versio>0.0.2</versio></depedecy>Sprigboot配置内容sprig:##三方Toke管理器toke-maager:#TokeMaager自动装配开关eabled:true#redis链接地址host:${TOKEN_REDIS_HOST:127.0.0.1}#redis密码password:${TOKEN_REDIS_PASSWORD:123456}#redis数据索引默认15database:${TOKEN_REDIS_DB:14}port:${TOKEN_REDIS_PORT:6379}#Toke管理器多实例配置cofigMap:#微信Toke接口配置,自动注入BeaweixiTokeMaagerweixi:type:WEIXINappid:xxxxxappsecret:xxxxxTokeAPI设计简介TokeAPI提供了获取Toke和刷新toke两种接口,参数包含SecretCofig和Map,这里使用Map的原因是我们不能确定获取Toke需要c端用户传递哪些数据字段,因此使用Map会较为通用的方式。TokeMaager会通过类型自动判断调用那个接口实现,当然我们也可以采用策略模式直接设置TokeAPI到TokeMager实例里。通过时间偏移量来防止本地toke过期,提前刷新Toke。







评论