国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

登錄用戶信息獲取 網(wǎng)關(guān)+攔截器+feign請(qǐng)求添加請(qǐng)求頭

這篇具有很好參考價(jià)值的文章主要介紹了登錄用戶信息獲取 網(wǎng)關(guān)+攔截器+feign請(qǐng)求添加請(qǐng)求頭。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

給所有請(qǐng)求添加用戶身份

登錄用戶信息獲取 網(wǎng)關(guān)+攔截器+feign請(qǐng)求添加請(qǐng)求頭

微服務(wù)獲取用戶身份

網(wǎng)關(guān)已經(jīng)給所有請(qǐng)求添加了用戶身份,也就是authorization頭信息。

登錄用戶信息獲取 網(wǎng)關(guān)+攔截器+feign請(qǐng)求添加請(qǐng)求頭

登錄用戶信息獲取 網(wǎng)關(guān)+攔截器+feign請(qǐng)求添加請(qǐng)求頭?

創(chuàng)建ThreadLocal工具類 :

package com.hmall.order.utils;

public class UserHolder {
    private static final ThreadLocal<Long> tl = new ThreadLocal<>();

    public static void setUser(Long userId) {
        tl.set(userId);
    }

    public static Long getUser() {
        return tl.get();
    }

    public static void removeUser() {
        tl.remove();
    }
}

創(chuàng)建攔截器:?

package com.hmall.order.interceptor;

import com.hmall.order.utils.UserHolder;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@slf4j
public class UserInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //1.獲取請(qǐng)求頭
        String authorization = request.getHeader("authorization");
        if (StringUtils.isBlank(authorization)) {
         
         log.warn("非法用戶訪問!請(qǐng)求路徑:{}",request.getRequestURI());
            //沒有用戶信息,未登錄
            throw new RuntimeException("用戶未登錄");            
            //或者 return false; response.setStatus(403);
        }
        //2.轉(zhuǎn)換用戶id
        Long userId = Long.valueOf(authorization);
        //3.存入ThreadLocal
        UserHolder.setUser(userId);
        //4.放行
        return true;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //用完清理掉
        UserHolder.removeUser();
    }
}

將攔截器注冊(cè)到SpringMvc,讓它生效:

package com.hmall.order.config;

import com.hmall.order.interceptor.UserInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //默認(rèn)的攔截路徑就是/**  ,excludePathPatterns()是不用攔截的路徑
//      registry.addInterceptor(new UserInterceptor()).addPathPatterns("/**").excludePathPatterns();
      registry.addInterceptor(new UserInterceptor());
    }
}

?將以上代碼(攔截器,config,utils) 放到哪個(gè)微服務(wù)中,哪個(gè)微服務(wù)/**路徑就會(huì)有攔截功能

沒有用戶信息的請(qǐng)求將會(huì)被攔截

給所有有feign的請(qǐng)求,將用戶信息添加請(qǐng)求頭:

package com.hmall.order.config;

import feign.RequestInterceptor;
import feign.RequestTemplate;

public class MyFeignInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {
        requestTemplate.header("authorization","2");
    }
}

?配置好后通過路徑訪問的將被攔截,但是通過網(wǎng)關(guān)的就可以訪問:

http://localhost:8083/order/123865420?被攔截?

http://localhost:10010/order/123865420?可訪問

如果想不從網(wǎng)關(guān),實(shí)現(xiàn)服務(wù)之間調(diào)用服務(wù), 將controller層的?被調(diào)用的方法開放一個(gè)接口到feign.

登錄用戶信息獲取 網(wǎng)關(guān)+攔截器+feign請(qǐng)求添加請(qǐng)求頭?

然后再調(diào)用者的啟動(dòng)類添加?:上面的包路徑要填寫一致

登錄用戶信息獲取 網(wǎng)關(guān)+攔截器+feign請(qǐng)求添加請(qǐng)求頭

注:(記得導(dǎo)feign的包到服務(wù)的pom.xml中)?

這樣因?yàn)閒eign請(qǐng)求頭有用戶信息通過feign之間調(diào)用服務(wù)就不會(huì)收攔截?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-491199.html

?

?

?

?

?

?

?

?

到了這里,關(guān)于登錄用戶信息獲取 網(wǎng)關(guān)+攔截器+feign請(qǐng)求添加請(qǐng)求頭的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot 統(tǒng)一功能處理(攔截器實(shí)現(xiàn)用戶登錄權(quán)限的統(tǒng)一校驗(yàn)、統(tǒng)一異常返回、統(tǒng)一數(shù)據(jù)格式返回)

    Spring Boot 統(tǒng)一功能處理(攔截器實(shí)現(xiàn)用戶登錄權(quán)限的統(tǒng)一校驗(yàn)、統(tǒng)一異常返回、統(tǒng)一數(shù)據(jù)格式返回)

    目錄 1. 用戶登錄權(quán)限校驗(yàn) 1.1 最初用戶登錄權(quán)限效驗(yàn) 1.2 Spring AOP 用戶統(tǒng)?登錄驗(yàn)證 1.3 Spring 攔截器 (1)創(chuàng)建自定義攔截器 (2)將自定義攔截器添加到系統(tǒng)配置中,并設(shè)置攔截的規(guī)則 1.4 練習(xí):登錄攔截器 (1)實(shí)現(xiàn) UserController 實(shí)體類 (2)返回的登錄頁面:login.html (3)實(shí)

    2024年02月12日
    瀏覽(58)
  • 3-3. SpringBoot項(xiàng)目集成【用戶身份認(rèn)證】實(shí)戰(zhàn) 【全流程篇】基于JWT+雙重檢查的登錄+登出+攔截器

    書接上文 實(shí)戰(zhàn)核心篇,我們已經(jīng) 把JWT的核心代碼實(shí)現(xiàn)了! 文中不止是代碼實(shí)現(xiàn),更是使用到了設(shè)計(jì)原則,提升大家的內(nèi)功心法。并且拋轉(zhuǎn)引玉的實(shí)現(xiàn)了RSA和HMAC兩種算法,還沒看過的同學(xué),建議先看上文。所以對(duì)于 基于JWT的Token用戶身份認(rèn)證機(jī)制 來說,剩下的就是與接口結(jié)

    2023年04月16日
    瀏覽(18)
  • Gateway網(wǎng)關(guān)攔截器的ServerWebExchange

    ?ServerWebExcahnge的解釋如下: Contract for an HTTP request-response interaction. Provides access to the HTTP request and response and also exposes additional server-side processing related properties and features such as request attributes. 大概是說:ServerWebExchange是一個(gè)HTTP請(qǐng)求-響應(yīng)交互的契約。提供對(duì)HTTP請(qǐng)求和響應(yīng)的訪問

    2024年04月10日
    瀏覽(15)
  • SpringBoot加入攔截器——登錄攔截器的實(shí)現(xiàn)

    SpringBoot加入攔截器——登錄攔截器的實(shí)現(xiàn)

    ? ? ? ? 攔截器 Interceptor 在 Spring MVC 中的地位等同于 Servlet 規(guī)范中的過濾器 Filter,攔截的是處理器的執(zhí)行,由于是全局行為,因此常用于做一些通用的功能,如請(qǐng)求日志打印、權(quán)限控制等。 ? ? ? ? 核心原理:AOP思想 preHandle:? 預(yù)先處理,在目標(biāo)的controller方法執(zhí)行之前,進(jìn)行

    2024年02月15日
    瀏覽(19)
  • SpringCloud GateWay網(wǎng)關(guān)通過全局?jǐn)r截器GlobalFilter實(shí)現(xiàn)API日志

    SpringCloud GateWay網(wǎng)關(guān)通過全局?jǐn)r截器GlobalFilter實(shí)現(xiàn)API日志

    產(chǎn)品經(jīng)理突然找到我說,咱們這個(gè)產(chǎn)品貌似沒有實(shí)現(xiàn)之前舊的系統(tǒng)平臺(tái)操作日志了;希望我盡快實(shí)現(xiàn)這個(gè)需求,以應(yīng)對(duì)一些檢查;因?yàn)闀r(shí)間關(guān)系再加上人員問題,跟我原先規(guī)劃得有些背道而馳 1.寫一個(gè)AOP日志Starter,再需要的模塊中引入,對(duì)應(yīng)方法去標(biāo)記注解,工程量比較大,

    2024年02月11日
    瀏覽(21)
  • springboot web開發(fā)登錄攔截器

    springboot web開發(fā)登錄攔截器

    在SpringBoot中我們可以使用HandlerInterceptorAdapter這個(gè)適配器來實(shí)現(xiàn)自己的攔截器。這樣就可以攔截所有的請(qǐng)求并做相應(yīng)的處理。 應(yīng)用場景 日志記錄,可以記錄請(qǐng)求信息的日志,以便進(jìn)行信息監(jiān)控、信息統(tǒng)計(jì)等。 權(quán)限檢查:如登陸檢測,進(jìn)入處理器檢測是否登陸,如果沒有直接

    2024年02月10日
    瀏覽(17)
  • vue+axios——?jiǎng)?chuàng)建多個(gè)實(shí)例共用請(qǐng)求攔截器和響應(yīng)攔截器(403錯(cuò)誤信息不提示bug解決)——基礎(chǔ)積累

    創(chuàng)建多個(gè)實(shí)例共用請(qǐng)求攔截器和響應(yīng)攔截器:使用的是函數(shù)的繼承,也就是 call() 方法,這個(gè)方法第一個(gè)參數(shù)就是 this ,后面的參數(shù)可以是一個(gè)也可以是多個(gè)。最后一定要記得要 return 出去,否則接口是拿不到數(shù)據(jù)的。 上面兩個(gè)文件合并后的處理如下: 在 main.js 中添加如下內(nèi)容

    2024年02月10日
    瀏覽(32)
  • 登錄頁面jwt密鑰,過濾器,攔截器,異常處理

    需求: 用戶未登錄時(shí),訪問其他也沒面,操作添加、刪除等操作時(shí),強(qiáng)行跳轉(zhuǎn)至登錄頁面。 實(shí)現(xiàn)方法: 1.使用Cookie,登錄后后端添加一個(gè)cookie,每次頁面判斷是否有cookie, 2。使用session,原理同上,只不過session是存儲(chǔ)在服務(wù)器里的,cookie是在瀏覽器里。 3。使用jwt令牌,登

    2023年04月25日
    瀏覽(26)
  • 登錄認(rèn)證方式匯總,例如ThreadLocal+攔截器+Redis、JWT

    登錄認(rèn)證方式匯總,例如ThreadLocal+攔截器+Redis、JWT

    先講講傳統(tǒng)的登錄方式 用cookie作為媒介存放用戶憑證。 用戶登錄系統(tǒng)之后,會(huì)返回一個(gè)加密的cookie,當(dāng)用戶訪問子應(yīng)用的時(shí)候會(huì)帶上這個(gè)cookie,授權(quán)以解密cookie并進(jìn)行校驗(yàn),校驗(yàn)通過后即可登錄當(dāng)前用戶。 缺點(diǎn): Cookie不安全,Cookie是存到客戶端的,攻擊者可以偽造Cookie偽造

    2024年02月07日
    瀏覽(54)
  • Vue3 axios響應(yīng)攔截器處理接口返回401未登錄跳轉(zhuǎn)登錄頁

    問題: 在 asiox 使用 useRouter 實(shí)例化創(chuàng)建 router 路由對(duì)象,在 response 響應(yīng)攔截器里為 undefined 訪問不到 使用 window.location.href = \\\'/login\\\' 跳轉(zhuǎn)登錄頁, 本地可以正常跳轉(zhuǎn),測試環(huán)境頁面會(huì)顯示 not found 404, 測試環(huán)境訪問地址大概是這樣 ip:8080/pm/#/login , 本地沒有 /pm 解決方案: 在 mai

    2024年01月21日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包