电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Spring Cloud Feign統一設置驗證token實現方法解析

瀏覽:103日期:2023-08-21 18:52:22

我們也在zuul中通過前置過濾器來統一設置token, 其實還漏掉了一種,那就是業務服務調用業務服務的時候,是沒有zuul這種前置過濾器的,那么我們該如何設置呢?

其實也挺簡單的,因為我們服務之前的調用是依賴于Feign的,我們可以從Feign上來做文章。

如果你仔細看過Feign的文檔的話,肯定會注意到下面一段代碼:

static class DynamicAuthTokenTarget<T> implements Target<T> { public DynamicAuthTokenTarget(Class<T> clazz, UrlAndTokenProvider provider, ThreadLocal<String> requestIdProvider); ... @Override public Request apply(RequestTemplate input) { TokenIdAndPublicURL urlAndToken = provider.get(); if (input.url().indexOf('http') != 0) { input.insert(0, urlAndToken.publicURL); } input.header('X-Auth-Token', urlAndToken.tokenId); input.header('X-Request-ID', requestIdProvider.get()); return input.request(); } } ... Bank bank = Feign.builder() .target(new DynamicAuthTokenTarget(Bank.class, provider, requestIdProvider));

我們可以為Feign設置一個請求攔截器,在調用之前做一些事情,添加請求頭信息。

原生的Feign都能添加攔截器,Spring Cloud中那肯定也是可以的。

前面的文章中我們講過通過自定義配置來覆蓋默認配置,我們創建了一個FeignConfiguration配置類來配置Feign的日志。

今天終于又派上用場了, 可以在這邊自定義一個攔截器:

@Configurationpublic class FeignConfiguration { /** * 日志級別 * @return */ @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } /** * 創建Feign請求攔截器,在發送請求前設置認證的token,各個微服務將token設置到環境變量中來達到通用 * @return */ @Bean public FeignBasicAuthRequestInterceptor basicAuthRequestInterceptor() { return new FeignBasicAuthRequestInterceptor(); }}/** * Feign請求攔截器 * @author yinjihuan * @create 2017-11-10 17:25 **/public class FeignBasicAuthRequestInterceptor implements RequestInterceptor { public FeignBasicAuthRequestInterceptor() { } @Override public void apply(RequestTemplate template) { template.header('Authorization', System.getProperty('fangjia.auth.token')); }}

大致的步驟呢就是通過設置Feign的攔截器來設置token, 因為這邊是通用的,所有呢token的值通過環境變量來傳遞。

每個微服務只需要將獲取的token信息設置到環境變量中即可:

System.setProperty('fangjia.auth.token', token);

上次我們也講過如果來自動獲取token,我們是通過定時任務來定時刷新的,當時還創建了AuthService來獲取token。

今天在優化下,因為這個也需要通用,所以直接將Service去掉了。

/** * 定時刷新token * * @author yinjihuan * @create 2017-11-09 15:39 **/@Componentpublic class TokenScheduledTask { private static Logger logger = LoggerFactory.getLogger(TokenScheduledTask.class); public final static long ONE_Minute = 60 * 1000 * 60 * 20; @Autowired private AuthRemoteClient authRemoteClient; /** * 刷新Token */ @Scheduled(fixedDelay = ONE_Minute) public void reloadApiToken() { String token = this.getToken(); while (StringUtils.isBlank(token)) { try {Thread.sleep(1000);token = this.getToken(); } catch (InterruptedException e) {logger.error('', e); } } System.setProperty('fangjia.auth.token', token); } public String getToken() { AuthQuery query = new AuthQuery(); query.setAccessKey('1'); query.setSecretKey('1'); ResponseData response = authRemoteClient.auth(query); return response.getData() == null ? '' : response.getData().toString(); }}

到現在,各個微服務直接的安全認證就結束啦,用起來不麻煩,下面總結下

定義一個用于認證的微服務,可以有用戶信息,和業務無關,提供認證接口 定義JWT工具類,提供生成token和檢查token的方法,公用 定義認證token的過濾器,公用 在需要認證的微服務中注冊過濾器即可實現攔截操作, 也可做成公用的,就是所有都需要認證 在調用方配置TokenScheduledTask,實現定時刷新token, 也可做成公用的 如果不需要認證,那么不注冊攔截過濾器即可,也不用 TokenScheduledTask,對業務代碼無任何侵入性

具體代碼可以參考github:

https://github.com/yinjihuan/spring-cloud

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 模型公司_模型制作_沙盘模型报价-中国模型网 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 土壤肥料养分速测仪_测土配方施肥仪_土壤养分检测仪-杭州鸣辉科技有限公司 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 代做标书-代写标书-专业标书文件编辑-「深圳卓越创兴公司」 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 水轮机密封网 | 水轮机密封产品研发生产厂家 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 防火窗_耐火窗_防火门厂家_防火卷帘门-重庆三乐门业有限公司 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 重庆LED显示屏_显示屏安装公司_重庆LED显示屏批发-彩光科技公司 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 广州中央空调回收,二手中央空调回收,旧空调回收,制冷设备回收,冷气机组回收公司-广州益夫制冷设备回收公司 | 间苯二酚,间苯二酚厂家-淄博双和化工| 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 飞象网 - 通信人每天必上的网站| 万家财经_财经新闻_在线财经资讯网 | 裹包机|裹膜机|缠膜机|绕膜机-上海晏陵智能设备有限公司 | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 九州网址_专注于提供网址大全分享推广中文网站导航服务 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 |