亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用springcloud+oauth2攜帶token去請(qǐng)求其他服務(wù)

 更新時(shí)間:2021年08月26日 12:04:34   作者:祁云泠伊  
這篇文章主要介紹了使用springcloud+oauth2攜帶token去請(qǐng)求其他服務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springcloud+oauth2攜帶token去請(qǐng)求其他服務(wù)

當(dāng)從oauth2服務(wù)中獲取到了token后

攜帶該token去請(qǐng)求其他服務(wù)時(shí),報(bào)出

{
    "error": "invalid_token",
    "error_description": "Invalid access token: e5224346-ea39-49ff-bd0e-1b9aef3db1da"
}

需要在當(dāng)前服務(wù)的配置文件配置

#內(nèi)置有user對(duì)象的地址,才能獲取到同一個(gè)token
security.oauth2.resource.user-info-uri=http://localhost:8003/api/user
security.oauth2.resource.prefer-token-info=false

springcloud 微服務(wù)之間傳遞token

在springcloud 微服務(wù)中大部分是通過(guò)token來(lái)驗(yàn)證用戶的,那么有個(gè)問(wèn)題,假設(shè)現(xiàn)在有A服務(wù),B服務(wù),外部使用RESTApi請(qǐng)求調(diào)用A服務(wù),在請(qǐng)求頭上有token字段,A服務(wù)使用完后,B服務(wù)也要使用,如何才能把token也轉(zhuǎn)發(fā)到B服務(wù)呢,最差的解決辦法就是吧token放到請(qǐng)求參數(shù)中,但是這樣第一個(gè)是明文傳輸,第二個(gè)是比較麻煩,前端每次都要加個(gè)參數(shù)。

這里可以使用Feign的RequestInterceptor,把request里的請(qǐng)求參數(shù)包括請(qǐng)求頭全部復(fù)制到feign的request里,但是直接使用一般情況下HttpServletRequest上下文對(duì)象是為空的,其實(shí)加個(gè)配置就可以解決。

1、服務(wù)A中 application.yml 加入如下配置

hystrix:
  command:
    default:
      execution:
        isolation:
          strategy: SEMAPHORE  #加上這個(gè)就可以獲取到HttpServletRequest
          thread:
            timeoutInMilliseconds: 10000

2、服務(wù)A中加入 FeginInterceptor

@Configuration
public class FeginInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {
       try {
           Map<String,String> headers = getHeaders();
           for(String headerName : headers.keySet()){
               requestTemplate.header(headerName, headers.get(headerName));
           }
       }catch (Exception e){
           e.printStackTrace();
       }
    }
    private Map<String, String> getHeaders(){
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        Map<String, String> map = new LinkedHashMap<>();
        Enumeration<String> enumeration = request.getHeaderNames();
        while (enumeration.hasMoreElements()) {
            String key = enumeration.nextElement();
            String value = request.getHeader(key);
            map.put(key, value);
        }
        return map;
    }
}

若服務(wù)B或C也想傳遞token,加上上述A配置即可~

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot使用prometheus監(jiān)控的示例代碼

    SpringBoot使用prometheus監(jiān)控的示例代碼

    這篇文章主要介紹了SpringBoot使用prometheus監(jiān)控的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • SpringBoot整合EasyExcel實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出

    SpringBoot整合EasyExcel實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出

    這篇文章主要為大家詳細(xì)介紹了SpringBoot整合EasyExcel實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出功能的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下
    2024-03-03
  • Java編程獲取經(jīng)緯度之間距離的方法

    Java編程獲取經(jīng)緯度之間距離的方法

    這篇文章主要介紹了Java編程獲取經(jīng)緯度之間距離的方法,涉及Java數(shù)學(xué)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • jvm字符串常量池在什么內(nèi)存區(qū)域問(wèn)題解析

    jvm字符串常量池在什么內(nèi)存區(qū)域問(wèn)題解析

    這篇文章主要介紹了jvm字符串常量池在什么內(nèi)存區(qū)域的問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 搞懂Java線程池

    搞懂Java線程池

    這篇文章主要介紹了Java線程池,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java8?Stream流的常用方法匯總

    Java8?Stream流的常用方法匯總

    Java8?API添加了一個(gè)新的抽象稱為流Stream,可以讓你以一種聲明的方式處理數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Java8?Stream流的常用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 詳解JAVA的控制語(yǔ)句

    詳解JAVA的控制語(yǔ)句

    這篇文章主要介紹了Java中的控制語(yǔ)句,循環(huán)等語(yǔ)句是Java編程中流程控制的基礎(chǔ),需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • Java給JFrame窗口設(shè)置熱鍵的方法實(shí)現(xiàn)

    Java給JFrame窗口設(shè)置熱鍵的方法實(shí)現(xiàn)

    這篇文章主要介紹了Java給JFrame窗口設(shè)置熱鍵的方法實(shí)現(xiàn),文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java Calendar類的使用總結(jié)實(shí)例

    Java Calendar類的使用總結(jié)實(shí)例

    這篇文章主要介紹了Java Calendar類的使用總結(jié)實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • crawler4j抓取頁(yè)面使用jsoup解析html時(shí)的解決方法

    crawler4j抓取頁(yè)面使用jsoup解析html時(shí)的解決方法

    crawler4j對(duì)response沒(méi)有指定編碼的頁(yè)面,解析成亂碼,很讓人煩惱,下面給出解決方法,需要的朋友可以參考下
    2014-04-04

最新評(píng)論