00:01
各位大家好,欢迎继续收看上硅谷视频课程,咱们继续来完成security这个案例,刚才呢给大家说明了service a采这个模块中,它里边有哪些主要部分,也如它的代码说明,那咱们下面继续往下来做,下面呢咱就把这个API getateway网关完成一个代码编写,然后整合前端做一下最终测试。测试过程中,我会通过debug带着各位详细看一下它每步的这个过程,那咱下面先来写这个网关,网关呢其实很简单,咱之前应该做一个介绍,网关的作用是什么呢?让他对外暴露一个统一的一个端口,然后咱们就直接反网关,通过网关让它转发到我们的具体模块中去,比如说我们的acl,比如说我们的其模块,当然这个过程呢,我们可以用N这的实现,我们这里边用的是spring,可里面一个组件叫getway网关把这个转发过程做到,那下面把这代码给各位就快速编写一下。
01:10
首先在里边呢,我们这个位置,比如说我先写一个配置类,在配置类中呢,其实我们主要先解决一个问题是什么呢?就是这个叫跨域,因为咱现在过程中呢,我们这个前端项目跟后端是分离的,前端的端口号跟后端不一样,所以这过程中会产生跨域,跨域呢各位记住,就是你里边有三个地方你的访问协议。IP地址端口号有任何一个不一样,默认是不能访问的,比如说我用HTP去访问hts IP不一样,端口不一样,它默认不能访问,这里边就叫跨域,所以这个我们先写个配置类,就把这跨域问题快速解决一下,解决方案有很多,我这里边直接通用一个配置类给他写一下。那首先我先把这包做创建,com.at硅谷,点上getway。
02:07
然后在里边呢,我这里边比如说因为是一个项目,我们先建一个配置类,配置类比如说起个名字就叫API。Getaway。这个OB。这是一个配置类,然后配置类里边我们加上注解,加上它那个就是相关的方法,那这里边我就从这个代码中给它复制,咱们给它快速改一下就可以了,因为结构都一样。在里边,我就把这个方法分过来给他改一下。复制,然后这个来回来,咱们在类上边加上它相关的这个注解,这是步骤中的知识,首先第一个注解我们加的是。啊,Spring不。Applicationli,因为我们现在咱的网关和AC都需要在咱们那个NAS中进行注册,所以咱们需要加上一个注解,这些注解就叫做an able。
03:11
然后它叫做第4COVER client,这就表示在na中进行这个注册,包括咱们看A材中是不是有这个,就这个咱们给它加上啊,就问了在na进行注册,然后这个启完之后,现在这个配就是我们的启用类完成了,完成启用类之后,下面我们在里边写个配置类。首先我先来一个包,这个包就叫config config里边咱加个类,就有我们的跨域,比如叫这个就叫这个cos,这个config啊。Cos。Con。在里边,因为它是配置类嘛,所以咱加个注解叫这个configuration里边我们写一个就一个B。
04:00
或者说创一个对象,然后下面再来一个方法,它叫public。然后这个叫cos web filter啊,用这个举这个跨域。Co cos web。Filter,我们给它起个方名字,比如叫这个。Co。The。所以这个啊,是我们写的这么一个。对象,然后把这个依赖展给他引入,引入之后在里边我们写它的具体代码,这个代码就是来解决这个跨域问题的。就刚才我说那个问题啊,那里边快速写一下啊,首先我们创建一个对象,叫这个cos cos,它叫做configuration。Fi guu。Configuration,我们叫configu,等于new上一个cos configuration,这是它一个跨域的这么一个配置对象。依赖引入,然后写完之后在里边可以加一些相关的设置,因为咱们现在一样,我们的访问都能进行,所以里边我就直接啊做一些设置就可以了,我来一个A的,你看里边啊有很多方法,比如我们看第一个叫这个A的O。
05:15
就这个啊,A load method里边我们加上咱就来一个星号,星号代表任意嘛,然后再来一个con.a的这个O。咱们叫这个。O给你啊,这里边也加上一个星号,然后咱们再设一个有那个叫拍的。刚才咱也看到了啊,就这个A的。和load head加上一个星号,让它都允许进行访问,星号好理解,就是这意吗?然后写完之后,下面我们再做一个设置啊,设置一个叫ul。这应该叫base cost configuration course啊,Source。我写一下啊,应该叫贝斯。
06:01
它叫扣。Configuration把这个复制啊,Configuration。然后它叫做S。啊,就是它啊,我们等于一个S。然后等于就是直接扭上这么一个对象。这么一个对象。法律依赖啊,咱先给它引入进来。我们看一下啊,这个类是不是写错了啊,他应该少字,如果写不出来,咱就直接通过那个搜一下啊,一样的啊,我们先检查一下啊。好,我们看啊。Ul扣啊扣写错了啊,Cos啊,应该是S。咱把它的依赖引入。啊,这样的话应该就对了啊,然后这样的话,我们现在妞上这么一个对象,然后对象中呢,里边我们妞上这么一个东西,咱用这种就是匹配的,就是路径匹配的方式给它做到,就是当我们访问这些请求,让他都允许这些访问就可以解决这个跨域里面加一个叫pass p。
07:14
Pat。我给他写完啊,然后加上一个就这个啊pass。然后这样的话,下面我们给它做一个设置,这个叫source.register这个方法里边有两个参数,第一个是我们的路径,我们加个杠,两个星号代表所有,然后第二个第上这个config就表示你所有路径都允许这个访问,这样的话能解这跨域,然后最终我们来re退,就是new上这么一个对象,这个叫cos外。The。然后在里边呢,把这个S给他。穿进来,所以这样的话啊,咱就可以把这个跨域我们做一个就是最基本的这么一个解决。
08:03
好,这个啊,应该就写出来了啊,所以这样的话呢,咱就把这个配置类我们就完成了啊,解决这个跨域,也如说这是关于网关的这个启用类,还有配置类,这各位自己写的时候,你把我这代码直接复制就可以了,我这里边给各位从利去写了一遍,然后写完之后呢,在这个就是API网关中,咱最后缺少的肯定还有一个配置文件,因为它肯定个启动一个服务,所以最后我们来写上这么一个配置文件,我在result里边建个文件,就这个点practice。Application properties。这个串出来,然后创建之后,里边我们加上一些基本配置,首先第一个配置肯定有它那个端口号嘛,这端口号我们就改成8222啊,当然你可以改成别的端口,只要它的端口不一样就可以了,这是第一个它这个端口号。我写一下注释啊。
09:00
第一个,然后第二个呢,还是它那个服务的名称,这个名称跟我们刚才写那个ACE中那个写法类似,我就把它拿过来,咱这个得改一下,因为写法都差不多。把这个啊拿过来,就这个服务名称拿到我们这里面来,然后这个服名称我给他改个名字,比如叫这个service getway。这是第二个,然后第三个呢,这里边啊,因为我们现在呢,这里边要做一件事情,他要通过网关去找到你ACE这个服务,所以咱们要把它在na code中也进行注册,也就是把这句话就拿过来在na code中进行注册,你配置Nars注册中心地址,然后这个选完之后,下面的咱需要做配置,这是网关中的配置。我们要使用这个。服务发现路由。什么叫夫发现路由呢?比如说我们现在。
10:00
网关跟acl都在注册中心中就用注册了,那你网关是不是要发现你的那里边的服务,所以里边你需要做一个发现路由,这个开启需要开启之后才能发现,好比说一个开关,你把开关打开之后才能进行发现,那我来写一下啊,就加一个可哎不是这个啊。就是w.cloud点上一个叫way。然后giveway后面加一个叫discovery,点上local,然后unable应该就这个啊,你看啊,这个值默认是false,咱改成处,你改成false的时候呢,它不能找到里边那个相应的服务,改成处之后相于把开关打开,它就可以使用了,这个啊是一个配置,然后下面配置是什么呢?就是它那个写一下啊,配置路由的一个规则。什么叫规则呢?给各位看一下啊,咱之前应该提到过啊,咱看里面这个截图部分。
11:02
之前给大家说过那个注册中心部分我们先找到啊,就这个。把这找到,然后各位看啊,比如我现在网关跟圈模块在注册中心中是不是都需要进行注册,而我这个网关它是对外包有端口,而我注册中心的服务可能有权限管理,可能有什么讲师管理,有客人管理,有很多,那我现在做件事情,如果说我访问的路径中包含acl,让他就转发到权限服务中去,比如我包含到那个cos,就到课程里面去,所以咱需要做这个路由。规则的这么一个匹配,把它做到就根据什么路径你访问这个服务,比如说咱们的acl,那我反8081,你是cos,那访问8082,那现在给它配置一下啊,这里边也是一些固定写法,给各位写一下点cloud。点上一个叫getway。
12:00
然后点上一个叫routes,注意啊,Routeors,因为这里边可以有多个规则,我这里边它是一个数组形式,咱加个下标零表示第一个点上一个叫ID啊,就给它起一个名字,然后这个名字比如我叫service。Al啊,这是第一个,然后第二个呢,设置就是你那个路由的uri,它里边有一个固定的一个写法。写个注释啊,设置路由的UI有固定写法,它叫LB冒号杠杠,然后加上你那个注册的服务名称。比如我在na里边,我注册叫al,或者我叫别的名字,你把这个写上,那各位写下啊,w.cloud。啊,可漏。然后点上这个叫get位,再上一个叫routes,零,因为咱们是第一个啊,当然你可以配置多个下一个那就是一了,这里边是零,再点上一个叫UI,等于我们这个路径就是上面这个路径LB。
13:10
冒号杠杠加上这个叫。Service al把这做到,然后做到之后下面就是你那个路径那个匹配规则。就是具体的路径的规则,比如我们这里边包含A可以访问,那这里边给各位写一下啊,前面结构都一样,Spring cloud.getway然后我们点上一个叫routes。这个零。啊零因为是第一个嘛。零在点上里边一个叫这个名字啊,其实它翻译过来就有那个叫断言的意思,它就表示一种路径的解析规则,我们等于一个叫pass,然后等于你那个具体路径,这些路径我们看一下啊,我们在al里边,就是咱们的CTRL中的路径应该都是这种结构,Adin al加这个值,然后这里边也是A的in al加这个值,所以里边按照这种规则做一个写法。
14:08
那我们来一个星号杠al杠星星它就表示你前面第一个是任意的,然后第二个是al,后面是任意的,当你是这种规则,那里边就能通过这个路由发现给到找到,所以这是关于配置文件部分,我们把它就做到了。各位把这给它能够快速写出来,或者按照我这个结构改成你自己实际的效果就可以了。这个啊,我给各位拿过来,这是第一个配置文件。然后包括后面。就是咱们那个刚才说那个权限的一些模块,然后这个写完之后,咱第三部分来整合这个网关,网关里边呢,就是咱们看到的这些结构,所以这个啊,网关部分我们就完成了,也就说现在咱在里边呢,把我们的Java的后端代码做到了,包括最核心的spring security,包括A中的模块,包括网关部分,咱们现在就都完成了。
15:12
然后这些呢都完成之后,最后呢,咱来整合这个前端,前端呢是一个vouee的这么一个代码,就vuee,咱用了一个叫vouee to利的这么一个模板啊,这个模板也是在在线教育项目中有相应讲解,咱这里边只给他做一个整合,重点在spring supreme里边,然后这个模板中呢,咱就需要改两个文件,第一个文件在这里边,你看啊,Config中有个叫DV inv,把这个路径改成我们那个网关的路径,因为我刚才网关就是。8222,然后第二个把这个API中的log in JS里边的文件的路径改成我们路径,包括你登录路径包你的获取信息。包括退出,包括获取菜单,就需要改这两个地方,其他地方不需要变,这样的话咱就完成了里边这个整合。
16:09
我把这个给各位接过来。咱们需要改正么?两个地方。然后我在笔记中给大家写一下啊,就是里边的第四个。前端的整合里边主要是我们改这两个文件。所以这样的话呢,咱们把这代码就完成了整合,还是我强调的各位,重点放到spring部分,因为咱们学的任何一门技术啊,往往都不是独立存在的,它肯定要依赖于其他的相关技术,比如我们现在讲这个spring security邀各位至少要掌握spring spring boot,包括门可漏的掌握更好。另外在这项目中也依赖于我们在线教育项目中的一些技术,比如说。
17:02
里边这个前端部分咱重点在spring spring部分,所以这样的话,代码整合我们就最终完成了。这是我们整合的,然后整合之后呢,咱下面就把这个代码做一个最终的一个测试,测试过程中我会通过第八个方式给各位详细来说一下里边的执行的过程。
我来说两句