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

【RuoYi-Cloud項(xiàng)目研究】【ruoyi-gateway模塊】網(wǎng)關(guān)的AuthFilter完成“認(rèn)證”,注意是認(rèn)證而不是權(quán)限

這篇具有很好參考價(jià)值的文章主要介紹了【RuoYi-Cloud項(xiàng)目研究】【ruoyi-gateway模塊】網(wǎng)關(guān)的AuthFilter完成“認(rèn)證”,注意是認(rèn)證而不是權(quán)限。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


過(guò)濾器的功能是檢驗(yàn)經(jīng)過(guò)網(wǎng)關(guān)的每一個(gè)請(qǐng)求,檢查 token 中的信息是否有效。

注意是“認(rèn)證檢查”,而不是“權(quán)限”,權(quán)限是在每個(gè)服務(wù)的Controller上貼權(quán)限注解

1. 功能介紹

1、在用戶完成登錄后,程序會(huì)把用戶相關(guān)的用戶、角色、權(quán)限等信息臨時(shí)存儲(chǔ)在 redis 中,并把token返回給終端用戶。

1、畢竟返回的token只存儲(chǔ)了極其少量的用戶信息,避免傳輸?shù)臄?shù)據(jù)量太大

2、RuoYi 返回的 token 中存儲(chǔ)的信息有:

user_key:login_tokens:uuid(存入redis中用的)

user_id:userId

username:userName

2、當(dāng)用戶攜帶token時(shí),我們判斷 token 是否有效,關(guān)聯(lián)的用戶是否登錄。如果token有效就把user_key、user_id、username 設(shè)置到請(qǐng)求頭中

此處主要是檢驗(yàn) token 是否有效。

設(shè)置到請(qǐng)求頭,統(tǒng)一處理,也方便其他模塊

2. AuthFilter的配置

@Component
public class AuthFilter implements GlobalFilter, Ordered
{
    private static final Logger log = LoggerFactory.getLogger(AuthFilter.class);
    
    @Autowired
    private RedisService redisService;


    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
    {
        ...
    }
}

AuthFilter 實(shí)現(xiàn)了GlobalFilter, Ordered,是一個(gè)全局過(guò)濾器,所有的模塊都有。這也很好理解,所有的模塊當(dāng)然都需要檢查 token 是否有效啊。

3. AuthFilter實(shí)現(xiàn)分析

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
    {
        ServerHttpRequest request = exchange.getRequest();
        ServerHttpRequest.Builder mutate = request.mutate();

        String url = request.getURI().getPath();
        // 1、檢驗(yàn)路徑
        if (StringUtils.matches(url, ignoreWhite.getWhites()))
        {
            return chain.filter(exchange);
        }
        String token = getToken(request);
        // 2、是否有token
        if (StringUtils.isEmpty(token))
        {
            return unauthorizedResponse(exchange, "令牌不能為空");
        }
        // 3、解析token,判斷是否是有效的token
        Claims claims = JwtUtils.parseToken(token);
        if (claims == null)
        {
            return unauthorizedResponse(exchange, "令牌已過(guò)期或驗(yàn)證不正確!");
        }
        String userkey = JwtUtils.getUserKey(claims);
        // 4、判斷用戶是否登錄
        boolean islogin = redisService.hasKey(getTokenKey(userkey));
        if (!islogin)
        {
            return unauthorizedResponse(exchange, "登錄狀態(tài)已過(guò)期");
        }
        String userid = JwtUtils.getUserId(claims);
        String username = JwtUtils.getUserName(claims);
        // 5、檢查token是否有userId、userName
        if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username))
        {
            return unauthorizedResponse(exchange, "令牌驗(yàn)證失敗");
        }

        // 6、設(shè)置用戶信息到請(qǐng)求
        addHeader(mutate, SecurityConstants.USER_KEY, userkey);
        addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid);
        addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username);
        // 7、內(nèi)部請(qǐng)求來(lái)源參數(shù)清除
        removeHeader(mutate, SecurityConstants.FROM_SOURCE);
        return chain.filter(exchange.mutate().request(mutate.build()).build());
    }

1、檢驗(yàn)路徑

路徑uri白名單檢驗(yàn),如果是白名單,直接通過(guò)。

2、是否有token

3、解析token,判斷是否是有效的token

只有有效的 token 才會(huì)解析出信息而不報(bào)錯(cuò)。

4、判斷用戶是否登錄

auth 的權(quán)限校驗(yàn)有一個(gè)校驗(yàn)用戶是否登錄的注解。

5、檢查token是否有userId、userName

6、設(shè)置用戶信息到請(qǐng)求頭

7、內(nèi)部請(qǐng)求來(lái)源參數(shù)清除

8、繼續(xù)下一個(gè)過(guò)濾器

4. 資料參考

語(yǔ)雀筆記地址:https://www.yuque.com/yuchangyuan/tkb5br文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-729830.html

到了這里,關(guān)于【RuoYi-Cloud項(xiàng)目研究】【ruoyi-gateway模塊】網(wǎng)關(guān)的AuthFilter完成“認(rèn)證”,注意是認(rèn)證而不是權(quán)限的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(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)文章

  • ruoyi-cloud微服務(wù)新建子模塊

    ruoyi-cloud微服務(wù)新建子模塊

    相關(guān)文章 官方文檔 1、復(fù)制system模塊 直接復(fù)制 modules下面已有的system模塊,改名為 test 2、在modules下的 pom.xml文件中添加子模塊 test 這里要注意添加的位置是在 modules下的 pom.xml,也就是 test的父模塊的 3、進(jìn)入 test模塊修改 pom.xml 把原有的system 修改成test,把 modules-system修改成

    2024年02月13日
    瀏覽(19)
  • 若依微服務(wù)版啟動(dòng)(RuoYi-Cloud)教程

    若依微服務(wù)版啟動(dòng)(RuoYi-Cloud)教程

    之前一直有小伙伴咨詢?nèi)粢牢⒎?wù)版如何在本地啟動(dòng),今天簡(jiǎn)單的給大家介紹一下。 首先,學(xué)習(xí)Java的小伙伴應(yīng)該對(duì)若依框架都應(yīng)該有所了解,RuoYi-Cloud 是一個(gè) Java EE 分布式 微服務(wù)架構(gòu)平臺(tái),基于經(jīng)典技術(shù)組合(Spring Boot、Spring Cloud Alibaba、Vue、Element),內(nèi)置模塊如:部門(mén)管

    2024年01月18日
    瀏覽(25)
  • 【云原生】3.5 RuoYi-Cloud部署實(shí)戰(zhàn)(下)

    【云原生】3.5 RuoYi-Cloud部署實(shí)戰(zhàn)(下)

    ?哈嘍~大家好呀,這篇呢我們接著上篇來(lái)講。 ???個(gè)人主頁(yè):個(gè)人主頁(yè)?????? ? ? ? ? ? ? ???系列專(zhuān)欄:【云原生系列】 ??與這篇相關(guān)的文章:? ? ? ? ? ?? 【云原生】3.2 Kubernetes 實(shí)戰(zhàn)之多租戶系統(tǒng)實(shí)戰(zhàn) 【云原生】3.2 Kubernetes 實(shí)戰(zhàn)之多租戶系統(tǒng)實(shí)戰(zhàn)_程序猿追的博

    2024年02月03日
    瀏覽(22)
  • 結(jié)合ruoyi-cloud和ruoyi-app實(shí)現(xiàn)微信小程序的授權(quán)登錄

    結(jié)合ruoyi-cloud和ruoyi-app實(shí)現(xiàn)微信小程序的授權(quán)登錄

    原視頻鏈接 https://www.bilibili.com/video/BV1mg4y1s75r/?spm_id_from=333.337.search-card.all.clickvd_source=c15794e732e28886fefab201ec9c6253 結(jié)合 RuoYi-Cloud 和 RuoYi-App 實(shí)現(xiàn)微信小程序的授權(quán)登錄。 之前講過(guò)前后端分離版的授權(quán)登錄,邏輯大致一致,不同點(diǎn)有: 微信頭像和昵稱(chēng)的獲取方式。由于最新的本地

    2024年02月09日
    瀏覽(40)
  • RuoYi-Cloud 若依微服務(wù)版啟動(dòng)教程(保姆級(jí))

    RuoYi-Cloud 若依微服務(wù)版啟動(dòng)教程(保姆級(jí))

    RuoYi-Cloud 是一個(gè) Java EE 企業(yè)級(jí)快速開(kāi)發(fā)平臺(tái),基于經(jīng)典技術(shù)組合(Spring Boot、Spring Cloud Alibaba、Vue、Element),內(nèi)置模塊如:部門(mén)管理、角色用戶、菜單及按鈕授權(quán)、數(shù)據(jù)權(quán)限、系統(tǒng)參數(shù)、日志管理、代碼生成等。在線定時(shí)任務(wù)配置;支持集群,支持多數(shù)據(jù)源。 1、系統(tǒng)環(huán)境 J

    2023年04月09日
    瀏覽(83)
  • 若依框架(RuoYi-Cloud 微服務(wù)版本)134節(jié)視頻教程

    RuoYi-Cloud 是一個(gè) Java EE 分布式微服務(wù)架構(gòu)平臺(tái),基于經(jīng)典技術(shù)組合(Spring Boot、Spring Cloud Alibaba、Vue、Element),內(nèi)置模塊如:部門(mén)管理、角色用戶、菜單及按鈕授權(quán)、數(shù)據(jù)權(quán)限、系統(tǒng)參數(shù)、日志管理、代碼生成等。在線定時(shí)任務(wù)配置;支持集群,支持多數(shù)據(jù)源。 在線體驗(yàn) 若依

    2024年02月13日
    瀏覽(18)
  • 若依cloud(RuoYi-Cloud)新增業(yè)務(wù)模塊和功能模塊增刪改查演示

    若依cloud(RuoYi-Cloud)新增業(yè)務(wù)模塊和功能模塊增刪改查演示

    前言 看了幾篇文章感覺(jué)都不太滿意,索性自己來(lái)寫(xiě)一篇。 一、后端 后端新建業(yè)務(wù)模塊流程大致如下: 看一下目錄結(jié)構(gòu), business 就是我們自己的業(yè)務(wù)模塊: 1.0 新建業(yè)務(wù)模塊 就是在 ruoyi-module模塊 下新建一個(gè) springboot 工程模塊,大家既然都學(xué)到cloud了,我相信這一步也不用多

    2024年02月17日
    瀏覽(19)
  • 若依開(kāi)源框架-微服務(wù)版本(ruoyi-Cloud)使用說(shuō)明-超詳細(xì)

    若依開(kāi)源框架-微服務(wù)版本(ruoyi-Cloud)使用說(shuō)明-超詳細(xì)

    JDK 1.8 Mysql 5.7以上 Nacos 2.0.3 Node 14 版本以上 打開(kāi)網(wǎng)站: RuoYi 若依官方網(wǎng)站 |后臺(tái)管理系統(tǒng)|權(quán)限管理系統(tǒng)|快速開(kāi)發(fā)框架|企業(yè)管理系統(tǒng)|開(kāi)源框架|微服務(wù)框架|前后端分離框架|開(kāi)源后臺(tái)系統(tǒng)|RuoYi|RuoYi-Vue|RuoYi-Cloud|RuoYi框架|RuoYi開(kāi)源|RuoYi視頻|若依視頻|RuoYi開(kāi)發(fā)文檔|若依開(kāi)發(fā)文檔|J

    2024年02月04日
    瀏覽(18)
  • 【docker快速部署微服務(wù)若依管理系統(tǒng)(RuoYi-Cloud)】

    【docker快速部署微服務(wù)若依管理系統(tǒng)(RuoYi-Cloud)】

    工作原因,需要一個(gè)比較完整的開(kāi)源項(xiàng)目測(cè)試本公司產(chǎn)品。偶然發(fā)現(xiàn)RuoYi-Cloud非常適合,它有足夠多的中間件,而且官方提供docker安裝,但我本人在安裝過(guò)程中遇到了很多坑,在這里記錄一下防止下次會(huì)再次遇到。 https://gitee.com/y_project/RuoYi-Cloud 內(nèi)存至少16G,處理器至少4核 內(nèi)

    2024年02月09日
    瀏覽(21)
  • 若依RuoYi-Cloud框架前端vue安裝時(shí)報(bào) core-js/modules/es.error.cause.js錯(cuò)誤怎么解決?

    如下所示,新手安裝若依RuoYi-Cloud框架前端vue時(shí)會(huì)報(bào)如下錯(cuò)誤: ERROR Failed to compile with 7 errors This dependency was not found: core-js/modules/es.error.cause.js in ./node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js, ./src/directive/permission/hasRole.js and 5 others To install it, you can run: npm install --save core

    2024年02月12日
    瀏覽(37)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包