老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

SpringBoot+SpringCloud用戶信息微服務傳遞實現解析

這篇文章主要介紹了SpringBoot+SpringCloud實現登錄用戶信息在微服務之間的傳遞,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

在邵東等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供網站設計、網站制作 網站設計制作定制制作,公司網站建設,企業網站建設,成都品牌網站建設,全網營銷推廣,外貿營銷網站建設,邵東網站建設費用合理。

實現思路:

1:準備一個ThreadLocal變量,供線程之間共享。

2:每個微服務對所有過來的Feign調用進行過濾,然后從請求頭中獲取User用戶信息,并存在ThreadLocal變量中。

3:每個微服務在使用FeignClient調用別的微服務時,先從ThreadLocal里面取出user信息,并放在request的請求頭中。

4:封裝為一個注解,在啟動類上標記即可。

代碼樣例:

1:ThreadLocal工具類 :UserInfoContext

package com.test.domi.common.system;

import com.test.domi.dao.UserInfo;

public class UserInfoContext {
  private static ThreadLocal userInfo = new ThreadLocal();
  public static String KEY_USERINFO_IN_HTTP_HEADER = "X-AUTO-FP-USERINFO";

  public UserInfoContext() {
  }

  public static UserInfo getUser(){
    return (UserInfo)userInfo.get();
  }

  public static void setUser(UserInfo user){
    userInfo.set(user);
  }
}

2:準備承載用戶信息的userInfo實體類(代碼略)

3:編寫攔截器 : TransmitUserInfoFeighClientIntercepter

package com.test.domi.config;

import com.alibaba.fastjson.JSON;
import com.test.domi.common.system.UserInfoContext;
import com.test.domi.dao.UserInfo;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

public class TransmitUserInfoFeighClientIntercepter implements RequestInterceptor {

  private static final Logger log = LoggerFactory.getLogger(TransmitUserInfoFeighClientIntercepter.class);
  public TransmitUserInfoFeighClientIntercepter() {
  }

  @Override
  public void apply(RequestTemplate requestTemplate) {
    //從應用上下文中取出user信息,放入Feign的請求頭中
    UserInfo user = UserInfoContext.getUser();
    if (user != null) {
      try {
        String userJson = JSON.toJSONString(user);
        requestTemplate.header("KEY_USERINFO_IN_HTTP_HEADER",new String[]{URLDecoder.decode(userJson,"UTF-8")});
      } catch (UnsupportedEncodingException e) {
        log.error("用戶信息設置錯誤",e);
      }
    }
  }
}

4:編寫過濾器:TransmitUserInfoFilter

package com.test.domi.config;

import com.alibaba.fastjson.JSON;
import com.test.domi.common.system.UserInfoContext;
import com.test.domi.dao.UserInfo;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

public class TransmitUserInfoFilter implements Filter {

  private static final Logger log = LoggerFactory.getLogger(TransmitUserInfoFeighClientIntercepter.class);
  public TransmitUserInfoFilter() {
  }
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
  }
  @Override
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    this.initUserInfo((HttpServletRequest)request);
    chain.doFilter(request,response);
  }

  private void initUserInfo(HttpServletRequest request){
    String userJson = request.getHeader("KEY_USERINFO_IN_HTTP_HEADER");
    if (StringUtils.isNotBlank(userJson)) {
      try {
        userJson = URLDecoder.decode(userJson,"UTF-8");
        UserInfo userInfo = (UserInfo) JSON.parseObject(userJson,UserInfo.class);
        //將UserInfo放入上下文中
        UserInfoContext.setUser(userInfo);
      } catch (UnsupportedEncodingException e) {
        log.error("init userInfo error",e);
      }
    }
  }

  @Override
  public void destroy() {
  }
}

5:編寫注解實現類: EnableUserInfoTransmitterAutoConfiguration

package spring.cloud.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import spring.cloud.common.interceptor.TransmitUserInfoFeighClientInterceptor;
import spring.cloud.common.filter.TransmitUserInfoFilter;

//@Configuration 在業務端通過注解EanbleUserInfoTransmitter加載
public class EnableUserInfoTransmitterAutoConfiguration {

  public EnableUserInfoTransmitterAutoConfiguration() {
  }

  @Bean
  public TransmitUserInfoFeighClientInterceptor transmitUserInfo2FeighHttpHeader(){
    System.out.println("-----TransmitUserInfoFeighClientInterceptor");
    return new TransmitUserInfoFeighClientInterceptor();
  }

  @Bean
  public TransmitUserInfoFilter transmitUserInfoFromHttpHeader(){
    System.out.println("-----TransmitUserInfoFilter");
    return new TransmitUserInfoFilter();
  }
}

6:編寫注解 EnableUserInfoTransmitter

package com.test.domi.annotation;

import com.test.domi.config.EnableUserInfoTransmitterAutoConfiguration;
import org.springframework.context.annotation.Import;

import java.lang.annotation.*;

@Documented
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Import({EnableUserInfoTransmitterAutoConfiguration.class})
public @interface EnableUserInfoTransmitter {
}

7:在啟動類上標記注解即可使用(無侵入)

package com.test.domi;

import com.test.domi.annotation.EnableUserInfoTransmitter;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
@MapperScan("com.test.domi.dao")
@EnableUserInfoTransmitter
public class TestCommonClient {

  public static void main(String[] args){

    SpringApplication.run(TestCommonClient.class,args);
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。


網站題目:SpringBoot+SpringCloud用戶信息微服務傳遞實現解析
當前鏈接:http://www.xueling.net.cn/article/ighhcg.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 午夜成人看特AAAA片视频 | 少妇做爰高潮呻吟A片免费 亚洲AV永久无码天堂影院黑人 | 色偷偷噜噜噜亚洲男人 | 鲁大师影院在线观看 | a在线播放| 成年美女黄网站18禁免费 | 一级国产视频 | 美女黄a一级视频 | av网站免费在线 | 国产做a爱片 | 538PROM精品视频在线搬运工 | 99探花在线观看 | 亚洲色欲色欱WWW在线 | 久久精品99国产精品亚洲 | 欧美成人高清视频 | av蜜臀在线| 亚洲国产良家在线观看 | 午夜国产亚洲欧美 | ASS年轻少妇BBWPIC | 18禁裸体动漫美女无遮挡网站 | 亚洲国产午夜精品 | 国产在线观看高清视频黄网 | 黄色一级片免费的 | 一道本在线观看视频 | 亚洲日本成人在线观看 | 国产精品视频在 | 亚洲特黄 | 国产乱插| 国精产品一二三四线免费 | 国产a一级毛片爽爽影院 | 免费观看的无遮挡AV | 欧美激情一区二区久久久 | 国产精品扒开腿做爽爽的视频 | 亚洲AV色香蕉一区二区蜜桃小说 | 欧美成人精品三区综合a片 激情欧美一区二区三区精品 | 日本久久久久久久久久久 | 国产免费福利在线观看 | 欧美日韩中文字幕在线 | 色婷婷综合久久久久中文一区二 | 亚洲欧美乱综合图片区小说区 | 看性生活大片 |