00:02
接下来啊,我们创建一个啊,既然我们创建了一个超级管理员的角色,那么我们再去创建一个啊,超级管理员的用户啊,为用户去。分配。这个权限啊,然而用户的话呢,我们就不写到权限里面了,不跟这个权限瞎瞎凑合了,我们再单独去创建一个用户的一个迁移。这个先折叠一下。啊,创建一个用户的迁就数据填充的文件。Make。Car。Said。有色。创建一个用户相关的一些。啊,这个。数据填充。找到。C啊,看我们的这里啊。这里就是创建用户啊。
01:01
创建用户。User等于我们使用。因为create之后可以得到一个用户的一个模型啊,我们有name字段。超级管理员还有email子的是吧?Super and com。好,这样添加完成之后,会返回用户的实力,然后我们给用户分配角色啊,分配这个超级管理角色,是不是可以直接使用右色,它的这个分配角色的一个方法。啊,因为我们这里是。啊,通过这个模型。啊,通过这个模型去触发的这个方法。先找到这个分配的方法。分配角色。
02:06
往下找这上面啊。为用户添加角色,我们使用这个就可以啊,添加一个角色。添加什么角色呢?就是我们这里创建的这个super admin。啊。来看一下。嗯。模型和模型和这个角色之间关联表,也是我们用户模型和角色之间关联表。他是不是啊,就有这个ID,还有模型,还有这个对吧。这样就会给我们创建一条关联的一条记录。来执行下迁移看一下。DB。
03:01
又写错了啊,应该是等号。没有给密码pass的。BCYPD加密,点上这样一个密码再来执行。啊,用户创建成功啊。先看看。这个表。就是我们用户模型和角色之间的关联表是多了一个数据IDV5的这个用户模型啊,这是我们的模型啊,然后。关联了。IDV2的一个角色是不是?啊,这样。就是我们这个五这个用户啊,就有了二这个角色,二这个角色是什么呢?是这个策略管理员,他又和权限有关联啊,又有这么多权限。
04:04
那接下来我们去验证一下啊,验证一下。我们的这个权限在验证权限之前呢,先把我们的这个数据填充给优化一下,你看现在我们没有这么多数据填充,而且它还有一定先先后的执行税率,你必须得先有权限,你才能去创建用户并分配权限是不是?而且你还有这个订单,不是你这个菜单需要创建。对吧,我们要一个一个的这么去杠杠卡拉执行,你如果有十几20个迁移,就数据填充是不是很累。哎,所以既然我们默认可以去执行这个数据填充,所以我们可不可以在这里去调用啊,其他的一个填充,对吧,使用this的这个。靠方法。然后是类名,你要调哪个填充,我们先写没有啊没有。先先。
05:00
先填充这个啊。接着再去填充权限。明显C啊,接着再去填充这个user。好,按照这个顺序去填充。好。这时候我们执行的时候,只需要去啊,执行一个迁移命令就可以啊,但是在执行之前先把这些都关掉啊。先把数据库删一删,给大家看一下。权限啊,删掉啊。关联表。啊,没了啊。角色。删一下。
06:05
这个也没了啊,他是做了这个数据表的一个数据库的一个事件的,就是你删除了其他的对应的就给删了。接下来用户。把这个用户给删掉。那菜单。哎,这几个菜单。好。这时候我去执行迁移啊执行。PP artisan DB,冒号C的哦,什么都不加,它就会执行默认的这个文件啊,默认的。这个迁移文件,而这里面呢,我们又去按顺序去调用了其他的迁移。好,回去。好,全部迁移完成是吧,包括我们迁移的这个啊,这个哪个执行的哪个类都给我们列出来了。啊,这时候你去随便去刷新数据库都是有的。
07:06
看到了吧,好,把这些都关了啊,那接下来我们去,既然权限已经分配好了,我们开始去验证我们的权限。看一下有没有使用验证。验证呢啊,我们要想把权限细化到某一个,就是说每一个这个请求啊,每一个这个链接,或者每一个路由上面,就要用这个看去验证这个用户具不具备访问某个权限的一个。啊,权限。那就是用这个方法啊。我们拿什么来举例?拿用户列表来举例,这里先全部关掉。生成一个token。嗯,我把这个参数改一改,我用。这个me去生成这个talking啊super吧,我们是不是一个super。这是我们的超级管理员是吧?是我分配的权限的用户是不是?
08:02
好。我用它来生成套啊,保存一下啊。接着用他的token,我去请求用户的列表。API。点test。User啊,这个是用户的列表,没有talking,现在把talking加上。嗯,少个me啊。接着看他应该是缺失这个talking。把他给加上。啊。用户列表拿到了是吧。啊,那接着。我去用户列表里面做做测试。首先我要获取到当前登录的user,是不是当前登录的user我们比较好获取啊,从also里面啊,传个我们的这个。
09:03
首位啊,也是看手机首位就可以直接获取到U3,是不是这是一种方法。对吧,Request里面是不是也可以直接拿到三。对不对,使用auto门面也可以啊,我们直接使用这种简单的方式,然后调用user模型实例,也就当前登录这个。登录的这个用户的这个啊模型实例,使用他的看方法去验证它具不具备某个权限。哎,我们写一个变量啊,Do check。去验证谁验证user.index user.index因为我们权限我们录的是什么,你看看。录的是不是我们路由名字对不对,所以验证的时候也是拿这个名字,就拿权限的这个内幕去去验证啊来我们来呃吧,直接到再切。现在再来请求用户列表看一下。一啊。
10:03
说明是处给我们转了,我们DD就可以了,DD。在这看是不是处是不是有有这个。用户首页这个权限对不对,那我们再看看他有这个商品首页权限吗?我们是不是没有录入,他应该返回for对吧。诶副是不是说明我们这么验证权限就可以啊,也就是说啊,If你的权限没有验证通过啊,我给你return一个类似。Response。艾啊,找个403的。这个是未认证通过啊,这个是403的啊。没有权限啊,那我们来测试,当然你访问这个用户列表肯定是可以的,有数据的对不对。
11:02
我们这里没有改啊,这里要首这个用户列表嘛,你就验证那个用户列表的这个,嗯,这个是有数据的。是不是?来,我们再测试一个请求,一个商品的一个列表,先把头部信息给加上。商品列表是api.test API里面的admin里面的商品啊。商品现在是能请求,因为我们商品控制器还没加是吧,我们把它复制一下,改一下这个商品的。来商品的列表。这个应该是验证商品的,对吧。来试一下。你看商品的就是没权限,403是不是好,那这个用户就有权限,这样权限管理我们就。就是测试是可以用的。是不是我们给这个用户分配了啊这些权限吗?那分配了这些权限,因为我们现在只录入这些权限,所以说你看用户列表他能看,商品列表他不能看。
12:07
啊,但是我们来想一个问题,我们。这么多功能,这么多路由啊,这么多这个控制器里面的方法这么多呢,你要一个一个你去里面去写,你比如你还要在这个去写,一个去写。肯定不行吧,对不对,所以这个我是给大家演示,你们对比一下这个权限,它确实是生效了,但是我们真正实际使用中不会这么去用啊,怎么去用,可以去。啊,制定一个中间件,然后让这个路由组啊,让这个需要登录的这个路由组去使用我们这个权限的一个中间面就可以了。清楚。啊,那这些我就删了啊,这些测试的代码就删了,我给大家演示一下这个权限,它确实生效了,可以用啊好,那我们既然说到中间键。说到中间店就看看手册。这个是中文的一个翻译啊。找到它的这个目录,你看看这个中间念。
13:02
它内置提供了一些中间站,比如说ruler,比如说这个pro,然后使用的时候,你可以使用pro线,然后后面冒号跟上你要验证的权限啊,多个的话啊也可以。是吧?比如你要验证某个角色,就是只有这个角色才能去访问这里面的功能。也行,对不对,但是如果我们基于权限。嗯。你这么去写,用这个分隔符,一个权限,两个权限,你要把所有的都写一遍吗。啊,还是说你先查一遍数据库,然后处理一遍,再写一遍。这样肯定是比较比较慢啊,所以他提供的这个系统提供的这个中间件。并不适合我们去使用。清楚吧,所以我们自己去创建一个中间件。P artist make。Ma。创建一个什么中间店,创建一个check。我没写。检查权限的一个中心面啊,它会给我们生成在这个中间键的这个目录有一个它对不对啊,这里写我们的验证规则啊,检查用户权限啊。
14:10
验证用户。是否具有请求?权限啊,我们在这里做验证啊,如果验证通过了,请求继续下发,如果验证不通过,我中间直接给你拦截,给你抛出403异常。知道吧,所以我们这里先获取到这个用户啊,用户呢,同样可以使用这个also去获取。哎,获取这个API,所谓的这个用户。啊,就是。好,接下来就是我们最关键的一步验证了,你看我们使用user色的这个看方法啊,去验证它具不具备某个权限,然后加上叹号取法,不具备某个权限的话,直接啊包403抛出4031层啊,这里因为我们是中间键,所以你用不了空制隙里面的这个。这个提供的这个定格派提供的响应生成器,所以这里我们用about。
15:05
啊,但是最关键的是这个怎么验证。啊,你像之前我们写在这里面啊,我们知道是这个是用户的一个列表,我们知道写这个对吧,包括商品,商品列表我们知道写这个。但是现在我们用中间念啊,中间念的话,那你怎么知道我要请求的是哪个。想想这个问题是不是这里我怎么写权限,写权限的名字啊,怎么写这些,你知道我要请求哪个吗?啊,我告诉你还真知道啊。呃,我们既然这里设计的是内部存的是路由别名啊,就是路由的名称,那么我可不可以在request里面获取到这个路由的一个名称,就他要请求的这个路由的名称是可以的,Request里面是包含这些参数的。清楚吧,嗯。也就是啊。先给大家滴滴一下,让大家看一看啊,怎么去获取这个路由名称,从request里面的这个root。
16:01
啊。里面有一个get name。这个啊,这个方法可以获取到你请求的一个路由的一个名称。好吧,啊。接下来这个中间件配置完成之后,我们要怎么去应用上呢?你要去这个科no里面。啊,就是这个坑洞里面HTTP啊,这个里面的这个坑弄里面去注册我们的中间键。注册路由中间件。在这最下面啊。写一个check点。好明显啊。然后写。我复制一下,它复制一下第一个啊,改一下就行了。Chat旁边线。好。在这可里面注册完之后,我就可以在路由里面去使用这个名字了,啊,使用这个名字。那现在已经使用了一个验证登录的中间站,现在如果不需要的,不需要登录的,我们就不用管它权限了,你都不需要登录了,你还验证权限干什么,是不是,那这边已经用一个了,多个的话,我们再加一个数组啊。
17:07
然后把它给粘贴到前面啊,这样我们就是。使用多个中间键了。来接着我们请求一下啊。看我们中间键里面。啊,我们打印的这个路由的名字是否生效,随便请求哪个都可以啊,中间键因为我们加到了这里面。看这打印是不是打印出来,我们请求录的名字。对吧,所以说我们是可以直接去用这个东西来做这个看的这个参数,因为这个看他要接收一个我们这个权限的一个名字啊,接收一个这个权限的这个名字,是不是刚好我们名字存的是路由的名字嘛,所以可以通过。啊,这个。Request,然后get去获取了路由的一个名称,然后进行验证。如果你没有权限,直接。抛出403异常来啊,如果你有权限继续下发请求啊,继续下发证件件,来,我们来测试一下用户列表,肯定没问题。
18:06
数据是不是拿到了。啊,因为我们是这个管理员,我们是具备这个用户权限的啊。来看商品列表。哎,是不是403没有权限了是吧?啊,这个就是中间件给我们返回的。这样我们的权限就写完了,是不是也用上了?啊,当然我为了节省时间,我们在这个迁移文件里面。啊,只是写了部分的一个权限,只是写了用户这一块的。啊,这里只是写了一个用户这一块的。啊,你剩下的我们要把所有的补全,把所有的这里面的权限都补全。如果没有名字的,就是没有路由名称的,可以使用这个name去给他去加上这个名称啊,要把所有的都加上。然后。录入到这个我们权限的这个权益的这里面。
19:01
啊,权限就说到这里。
我来说两句