這篇文章給大家分享的是有關(guān)Spring Cloud Feign如何實(shí)現(xiàn)統(tǒng)一設(shè)置驗(yàn)證token的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
我們也在zuul中通過前置過濾器來統(tǒng)一設(shè)置token, 其實(shí)還漏掉了一種,那就是業(yè)務(wù)服務(wù)調(diào)用業(yè)務(wù)服務(wù)的時(shí)候,是沒有zuul這種前置過濾器的,那么我們該如何設(shè)置呢?
其實(shí)也挺簡單的,因?yàn)槲覀兎?wù)之前的調(diào)用是依賴于Feign的,我們可以從Feign上來做文章。
如果你仔細(xì)看過Feign的文檔的話,肯定會注意到下面一段代碼:
static class DynamicAuthTokenTargetimplements Target { public DynamicAuthTokenTarget(Class clazz, UrlAndTokenProvider provider, ThreadLocal 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));