本篇内容主要讲解“怎么使用Spring Cloud的Zuul网关和JWT身份验证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Spring Cloud的Zuul网关和JWT身份验证”吧!
1.1什么是Zuul

1.2 快速入门--路由转发
//已有访问路径
http://localhost:8080/user
//通过网关希望访问路径
http://localhost:10010/userservice/user
步骤0:创建 zuul_demo
步骤一:修改pom文件,添加 zuul 、测试 依赖
步骤二:创建启动类,添加 开启网关代理 注解 @EnableZuulProxy
步骤三:创建yml文件,配置端口、服务名、对应关系(访问路径 / 服务地址)
步骤0:创建 zuul_demo
步骤一:修改pom文件,添加 zuul 、测试 依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
步骤二:创建启动类,添加 开启网关代理 注解 @EnableZuulProxy
package com.czxy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
@EnableZuulProxy //开启网关代理
public class Zuul2Application {
public static void main(String[] args) {
SpringApplication.run(Zuul2Application.class,args);
}
}
步骤三:创建yml文件,配置端口、服务名、对应关系(访问路径 / 服务地址)
server:
port: 10010
spring:
application:
name: zuuldemo2
#网关配置:访问路径 和 服务路径 对应关系
zuul:
routes:
userservice:
path: /userservice/** #访问路径
url: http://localhost:8080 #服务路径
1.3面向服务的路由

步骤一:搭建eureka客户端(pom依赖、启动类注解、yml注册地址)
pom依赖
<!--添加eureka客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
启动类
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 //开启网关代理
@EnableEurekaClient //开启eureka客服端
public class Zuul2Application {
public static void main(String[] args) {
SpringApplication.run(Zuul2Application.class,args);
}
}
yml文件
#注册地址
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka
步骤二:yml文件对应关系 (访问路径 和 服务名)
#网关配置:访问路径 和 服务路径 对应关系
zuul:
routes:
userservice:
path: /userservice/** #访问路径
#url: http://localhost:8080 #服务路径
serviceId: userservice #服务名称时
1.4 简化路由配置
zuul:
routes:
userservice: /userservice/**
1.5 默认路由规则
##默认配置
zuul:
routes:
adminservice: /adminservice/**

1.6 zuul基础环境搭建
步骤0:创建项目 zuul_demo
步骤一:修改pom文件,添加 zuul依赖、eureka 客户端依赖
<dependencies>
<!--网关依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!--添加eureka客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
步骤二:创建启动类,添加2添加 开启网关代理、开启eureka客户端
开启网关代理 @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 //开启网关代理
@EnableEurekaClient //开启eureka客服端
public class Zuul2Application {
public static void main(String[] args) {
SpringApplication.run(Zuul2Application.class,args);
}
}
步骤三:创建yml文件,配置端口号、服务名、注册地址
server:
port: 10010
spring:
application:
name: zuuldemo2
#注册地址
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka
1.7 路由前缀
路由前缀:用于维护 版本号 或 项目名
修改yml文件,进行配置
zuul:
prefix: /api

1.8 Zuul过滤器
1.8.1 概述
编写过滤器,继承父类:ZuulFilter
常见方法:
1.8.2 自定义过滤器
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 过滤器类型
}
@Override
public int filterOrder() {
return 1; //2 过滤器排序
}
@Override
public boolean shouldFilter() {
return true; //3 是否执行
}
@Override
public Object run() throws ZuulException {
// 获得一个特殊请求头,判断是否有值:有 返回 null(放行) , 没有 响应状态码401
//1 获得工具类(请求上下文对象)
RequestContext requestContext = RequestContext.getCurrentContext();
//2 通过工具类获得request对象
HttpServletRequest request = requestContext.getRequest();
//3 通过request对象获得特殊请求头
String auth = request.getHeader("authorization");
//4 判断
if(auth == null){
//没有
requestContext.setSendZuulResponse(false); //关闭响应
requestContext.setResponseStatusCode(401);
}
//放行
return null;
}
}
1.9 Spring Cloud 总结
eureka :注册中心
ribbon:负载均衡(集群)
Hystrix:熔断器,执行备选方案
Feign:远程调用
Zuul:网关,统一入口。

2. JWT
服务与服务之间共享数据,采用JWT先生成数据,在另一个服务中解析数据,为了保证数据安全性,使用RAS对数据进行加密。
2.1 RAS 工具
RAS 非对称加密算法
同时生产一对秘钥:公钥和私钥。
公钥秘钥:用于加密
私钥秘钥:用于解密
特点
编写测试类使用工具生成公钥,私钥
//生成公钥和私钥
RasUtils.generateKey(公钥位置,私钥位置,密码);
RasUtils.generateKey(pubKeyPath,priKeyPath,"234");
//获得公钥
RasUtils.getPublicKey(pubKeyPath);
//获得私钥
RasUtils.getPrivateKey(priKeyPath);

2.2 JWT工具
到此,相信大家对“怎么使用Spring Cloud的Zuul网关和JWT身份验证”有了更深的了解,不妨来实际操作一番吧!这里是天达云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!