老熟女激烈的高潮_日韩一级黄色录像_亚洲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
主站蜘蛛池模板: 宝贝张开腿嗯啊高潮了视频 | 色黄大色黄女片免费中国 | 岛国一级毛片 | 国产成人啪精品视频免费网站 | 国产综合小视频 | 蜜臀忘忧草久久久久久久aⅴ | 一级片视频免费 | 亚洲成人91 | 成人无码A区在线观看视频 亚洲免费成人在线 | 全黄一级播放 | 夜夜夜夜猛噜噜噜噜噜婷婷 | 亚洲一线视频 | 成人性生交大片免费看- | 情侣黄网站免费看 | 老汉色老汉首页a亚洲 | 啪视频网站 | 大地资源在线影视播放 | 久久国产亚洲高清观看 | 黄色视屏网站 | 野花日本大全免费观看中文版 | 亚洲欧美天堂 | 国产娇小性色xxxxx视频 | 伊人久久综合精品无码 | 欧美日韩中文 | 91网站在线观看免费 | 欧美激情在线观看 | 亚洲精品高潮久久久久久久 | 欧美a级大片 | 猫咪成人在线观看 | 国产精品99久久久久久久久久久久 | 被多个强壮的黑人灌满精 | 二区免费 | 国产成人无码免费视频麻豆 | 亚洲成人网站在线观看 | 一区二区三区少妇 | 插插插操操操 | 少妇啪啪av一区二区三区 | 欧美激情小视频 | 一区二区三区视频免费视频观看网站 | 亚洲av人无码激艳猛片 | 国产精品久久久影视青草 |