为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

springcloudzuul网关对微服务路由及权限的控制

2023-06-23 5页 doc 22KB 6阅读

用户头像 个人认证

is_856463

暂无简介

举报
springcloudzuul网关对微服务路由及权限的控制  springcloudzuul网关对微服务路由及权限的控制  前提:1.eureka-server注册服务中心。2.准备两个服务提供者,分别在端口8090,80913.启动Eureka服务器和两个服务提供者,访问http://localhost:8761/,如下图4.zuul网关服务搭建pom文件依赖如下:org.springframework.cloudspring-cloud-starter-zuulorg.springframework.cloudspring-cloud-starter-eureka配置文件appl...
springcloudzuul网关对微服务路由及权限的控制
  springcloudzuul网关对微服务路由及权限的控制  前提:1.eureka-server注册服务中心。2.准备两个服务提供者,分别在端口8090,80913.启动Eureka服务器和两个服务提供者,访问http://localhost:8761/,如下图4.zuul网关服务搭建pom文件依赖如下:org.springframework.cloudspring-cloud-starter-zuulorg.springframework.cloudspring-cloud-starter-eureka配置文件application.ymlspring:application:name:gatewayserver:port:8888eureka:client:serviceUrl:defaultZone:http://localhost:8761/eureka/#注册中心地址instance:prefer-ip-address:trueinstance-id:${spring.cloud.client.ipAddress}:${spring.application.name}:${server.port}#访问路径直接指向serviceId实例对应服务的接口#如:http://localhost:8761/server-kl/user(这里的server-kl指的是path)通过网关访问的是http://server-kl/user(此处server-kl指的是serviceId)zuul:routes:api-kls:path:/server-kl/**serviceId:server-kl#指向服务server-kl的applicationnamecustomSensitiveHeaders:trueapi-klc:path:/client-kl/**serviceId:client-kl#指向服务client-kl的applicationnamecustomSensitiveHeaders:trueadd-proxy-headers:true#X-Forwarder-Host请求头默认添加到转发请求中#目的:防止服务重启后,第一次访问超时hystrix:command:default:execution:timeout:enabled:falsestrategy:SEMAPHORE#Request请求头设置token编写一个zuul过滤器,用来控制权限等。每次发送请求的时候都需要判断是否有token。packagecom.kl.getaway.filter;importcom.netflix.zuul.ZuulFilter;importcom.netflix.zuul.context.RequestContext;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.context.annotation.Configuration;importjavax.servlet.http.HttpServletRequest;@Configuration//该注解是让服务器启动时将奔雷作为配置类注入到spring容器。如若不加此注解,需在启动类配置该beanpublicclassAccessFilterextendsZuulFilter{privatestaticLoggerlog=LoggerFactory.getLogger(AccessFilter.class);//可以在请求被路由之前调用@OverridepublicStringfilterType(){return"pre";}//通过int值来定义过滤器的执行顺序,越小的值越优先处理。@OverridepublicintfilterOrder(){return0;}//返回一个boolean类型来判断该过滤器是否要执行,所以通过此可实现过滤器的开关。true:总是生效,false:不生效@OverridepublicbooleanshouldFilter(){returntrue;}//过滤器的具体逻辑根据业务自行编写。@OverridepublicObjectrun(){RequestContextctx=RequestContext.getCurrentContext();HttpServletRequestrequest=ctx.getRequest();StringaccessToken=String.valueOf(request.getParameter("Token"));if(!accessToken.equals("zz")){ctx.setSendZuulResponse(false);ctx.setResponseStatusCode(401);returnnull;}returnnull;}启动类如下:packagecom.kl.getaway;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.netflix.eureka.EnableEurekaClient;importorg.springframework.cloud.netflix.zuul.EnableZuulProxy;@EnableZuulProxy@SpringBootApplicationpublicclassZuulApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ZuulApplication.class,args);}}开启服务后如下图:演示:1发送请求到service-kl(不带token):http://localhost:8761/service-kl/getNum?number=0由于没有权限,页面跳转401页面。2发送请求到service-1(带token):http://localhost:8761/service-kl/getNum?number=1&Token=zz返回方法运行结果3发送请求给service-2(带token):http://localhost:8761/client-kl/getNum?number=1&Token=zz效果同上getNum是service里定义的rest接口。 -全文完-
/
本文档为【springcloudzuul网关对微服务路由及权限的控制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索