真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么使用SpringCloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證

本篇內(nèi)容主要講解“怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證”吧!

為寧城等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及寧城網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、寧城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

 1.1什么是Zuul

  • Zuul,是spring cloud 全家桶中的網(wǎng)關(guān)

  • 網(wǎng)關(guān):程序統(tǒng)一入口。主要功能:服務(wù)分發(fā)(動(dòng)態(tài)路由),服務(wù)鑒權(quán) 等。

怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證

1.2 快速入門--路由轉(zhuǎn)發(fā)

  • 需求

//已有訪問(wèn)路徑
http://localhost:8080/user
//通過(guò)網(wǎng)關(guān)希望訪問(wèn)路徑
http://localhost:10010/userservice/user
  • 步驟0:創(chuàng)建 zuul_demo

  • 步驟一:修改pom文件,添加 zuul 、測(cè)試 依賴

  • 步驟二:創(chuàng)建啟動(dòng)類,添加 開啟網(wǎng)關(guān)代理 注解 @EnableZuulProxy

  • 步驟三:創(chuàng)建yml文件,配置端口、服務(wù)名、對(duì)應(yīng)關(guān)系(訪問(wèn)路徑 / 服務(wù)地址)

  • 步驟0:創(chuàng)建 zuul_demo

  • 步驟一:修改pom文件,添加 zuul 、測(cè)試 依賴

    
            
                org.springframework.cloud
                spring-cloud-starter-netflix-zuul
            
            
                org.springframework.boot
                spring-boot-starter-test
            
        

     

  • 步驟二:創(chuàng)建啟動(dòng)類,添加 開啟網(wǎng)關(guān)代理 注解 @EnableZuulProxy

    package com.czxy;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
    
    
    @SpringBootApplication
    @EnableZuulProxy        //開啟網(wǎng)關(guān)代理
    public class Zuul2Application {
        public static void main(String[] args) {
            SpringApplication.run(Zuul2Application.class,args);
        }
    }

     

  • 步驟三:創(chuàng)建yml文件,配置端口、服務(wù)名、對(duì)應(yīng)關(guān)系(訪問(wèn)路徑 / 服務(wù)地址)

    server:
      port: 10010
    spring:
      application:
        name: zuuldemo2
    #網(wǎng)關(guān)配置:訪問(wèn)路徑 和 服務(wù)路徑 對(duì)應(yīng)關(guān)系
    zuul:
      routes:
        userservice:
          path: /userservice/**       #訪問(wèn)路徑
          url: http://localhost:8080  #服務(wù)路徑

     

1.3面向服務(wù)的路由

怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證

  • 步驟一:搭建eureka客戶端(pom依賴、啟動(dòng)類注解、yml注冊(cè)地址)

    • pom依賴

      
              
                  org.springframework.cloud
                  spring-cloud-starter-netflix-eureka-client
              

       

    • 啟動(dòng)類

      package com.czxy;
      
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
      import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
      
      
      @SpringBootApplication
      @EnableZuulProxy        //開啟網(wǎng)關(guān)代理
      @EnableEurekaClient     //開啟eureka客服端
      public class Zuul2Application {
          public static void main(String[] args) {
              SpringApplication.run(Zuul2Application.class,args);
          }
      }

       

    • yml文件

      #注冊(cè)地址
      eureka:
        client:
          service-url:
            defaultZone: http://localhost:10086/eureka

  • 步驟二:yml文件對(duì)應(yīng)關(guān)系 (訪問(wèn)路徑 和 服務(wù)名)

    #網(wǎng)關(guān)配置:訪問(wèn)路徑 和 服務(wù)路徑 對(duì)應(yīng)關(guān)系
    zuul:
      routes:
        userservice:
          path: /userservice/**       #訪問(wèn)路徑
          #url: http://localhost:8080 #服務(wù)路徑
          serviceId: userservice    #服務(wù)名稱時(shí)

1.4 簡(jiǎn)化路由配置

  • 路由名稱 和 服務(wù)名 通常采用一樣的命名,zuul允許簡(jiǎn)化

zuul:
  routes:
    userservice: /userservice/**

1.5 默認(rèn)路由規(guī)則

  • 默認(rèn)情況下,一切服務(wù)的映射路徑就是服務(wù)名本身。

##默認(rèn)配置
zuul:
  routes:
    adminservice: /adminservice/**

怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證

1.6 zuul基礎(chǔ)環(huán)境搭建

  • 步驟0:創(chuàng)建項(xiàng)目 zuul_demo

  • 步驟一:修改pom文件,添加 zuul依賴、eureka 客戶端依賴

       
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-zuul
            
            
            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-client
            
            
            
                org.springframework.boot
                spring-boot-starter-test
            
    
        

  • 步驟二:創(chuàng)建啟動(dòng)類,添加2添加 開啟網(wǎng)關(guān)代理、開啟eureka客戶端

    • 開啟網(wǎng)關(guān)代理 @EnableZuulProxy

    • 開啟eureka客戶端 @EnableEurekaClient

      package com.czxy;
      
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
      import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
      
      
      @SpringBootApplication
      @EnableZuulProxy        //開啟網(wǎng)關(guān)代理
      @EnableEurekaClient     //開啟eureka客服端
      public class Zuul2Application {
          public static void main(String[] args) {
              SpringApplication.run(Zuul2Application.class,args);
          }
      }

  • 步驟三:創(chuàng)建yml文件,配置端口號(hào)、服務(wù)名、注冊(cè)地址

    server:
      port: 10010
    spring:
      application:
        name: zuuldemo2
    #注冊(cè)地址
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:10086/eureka

1.7 路由前綴

  • 路由前綴:用于維護(hù) 版本號(hào) 或 項(xiàng)目名

  • 修改yml文件,進(jìn)行配置

zuul:
  prefix: /api
  • 訪問(wèn)

怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證

1.8 Zuul過(guò)濾器

1.8.1 概述

  • 編寫過(guò)濾器,繼承父類:ZuulFilter

  • 常見(jiàn)方法:

    • filterType() 過(guò)濾器類型,取值:"pre"

    • filterOrder() 過(guò)濾器順序,取值:1

    • shouldFilter() 是否執(zhí)行,取值:true

    • run() 執(zhí)行業(yè)務(wù)邏輯

1.8.2 自定義過(guò)濾器

  • 只要將過(guò)濾器的實(shí)現(xiàn),添加到spring容器中,zuul將自動(dòng)啟用過(guò)濾器。

    • 過(guò)濾器父類:ZuulFilter

    • 工具類(請(qǐng)求上下文對(duì)象):RequestContext

    • 特殊請(qǐng)求頭:Authorization(下圖是postman軟件)

      怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證

package com.czxy.filter;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;


@Component
public class LoginFilter extends ZuulFilter {
    @Override
    public String filterType() {
        return "pre";            //1 過(guò)濾器類型
    }

    @Override
    public int filterOrder() {
        return 1;               //2 過(guò)濾器排序
    }

    @Override
    public boolean shouldFilter() {
        return true;           //3 是否執(zhí)行
    }

    @Override
    public Object run() throws ZuulException {
        // 獲得一個(gè)特殊請(qǐng)求頭,判斷是否有值:有 返回 null(放行) , 沒(méi)有 響應(yīng)狀態(tài)碼401
        //1 獲得工具類(請(qǐng)求上下文對(duì)象)
        RequestContext requestContext = RequestContext.getCurrentContext();
        //2 通過(guò)工具類獲得request對(duì)象
        HttpServletRequest request = requestContext.getRequest();
        //3 通過(guò)request對(duì)象獲得特殊請(qǐng)求頭
        String auth = request.getHeader("authorization");
        //4 判斷
        if(auth == null){
            //沒(méi)有
            requestContext.setSendZuulResponse(false);      //關(guān)閉響應(yīng)
            requestContext.setResponseStatusCode(401);
        }

        //放行
        return null;
    }
}

1.9 Spring Cloud 總結(jié)

  • eureka :注冊(cè)中心

    • 服務(wù)端:提供注冊(cè)

    • 客戶端:進(jìn)行注冊(cè)

  • ribbon:負(fù)載均衡(集群)

  • Hystrix:熔斷器,執(zhí)行備選方案

  • Feign:遠(yuǎn)程調(diào)用

  • Zuul:網(wǎng)關(guān),統(tǒng)一入口。

怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證

2. JWT

服務(wù)與服務(wù)之間共享數(shù)據(jù),采用JWT先生成數(shù)據(jù),在另一個(gè)服務(wù)中解析數(shù)據(jù),為了保證數(shù)據(jù)安全性,使用RAS對(duì)數(shù)據(jù)進(jìn)行加密。

2.1 RAS 工具

  • RAS 非對(duì)稱加密算法

    • 同時(shí)生產(chǎn)一對(duì)秘鑰:公鑰和私鑰。

    • 公鑰秘鑰:用于加密

    • 私鑰秘鑰:用于解密

    • 特點(diǎn)

  • 編寫測(cè)試類使用工具生成公鑰,私鑰

//生成公鑰和私鑰
RasUtils.generateKey(公鑰位置,私鑰位置,密碼);
RasUtils.generateKey(pubKeyPath,priKeyPath,"234");
//獲得公鑰
RasUtils.getPublicKey(pubKeyPath);
//獲得私鑰
RasUtils.getPrivateKey(priKeyPath);

怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證

2.2 JWT工具

  • JWT 基于JSON的認(rèn)證規(guī)范。(Json Web Token)

  • 使用JWT目的:生成數(shù)據(jù)、解析數(shù)據(jù)

  • 使用JWT

    • 步驟一:添加依賴(含之前的)

      
              0.9.0
              2.9.7
              1.16.20
              1.9.3
          
      
      
          
              
              
                  org.springframework.cloud
                  spring-cloud-starter-netflix-zuul
              
              
              
                  org.springframework.cloud
                  spring-cloud-starter-netflix-eureka-client
              
              
              
                  org.springframework.boot
                  spring-boot-starter-test
              
              
              
                  commons-beanutils
                  commons-beanutils
                  ${beanutils.version}
              
      
              
                  io.jsonwebtoken
                  jjwt
                  ${jwt.jjwt.version}
              
      
              
                  joda-time
                  joda-time
                  ${jwt.joda.version}
              
      
              
                  org.projectlombok
                  lombok
                  ${lombok.version}
                  provided
              
      
      
          
    • 步驟二:導(dǎo)入工具

    • 步驟三:使用

      //生成數(shù)據(jù), UserInfo --> String(加密)
      //JwtUtils.generateToken(數(shù)據(jù),過(guò)期時(shí)間(分鐘), 私鑰)
      String token = JwtUtils.generateToken(userInfo,30, RasUtils.getPrivateKey(priKeyPath));
      
      //解析數(shù)據(jù), String(加密) --> UserInfo
      // JwtUtils.getObjectFromToken(加密數(shù)據(jù), 公鑰, 封裝對(duì)象.class);
      UserInfo userInfo = JwtUtils.getObjectFromToken(token, RasUtils.getPublicKey(pubKeyPath), UserInfo.class);

到此,相信大家對(duì)“怎么使用Spring Cloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


當(dāng)前文章:怎么使用SpringCloud的Zuul網(wǎng)關(guān)和JWT身份驗(yàn)證
文章地址:http://weahome.cn/article/pcogip.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部