00:01
各位大家好,欢迎继续收看上硅谷视频教程。我们继续来学习security,在刚才内容中呢,我们讲到了可以自定义登录页面,然后完成用户认证过程,咱们刚才把这过程已经完成了实现,然后实现之后呢,我们下面继续往下来学习,咱们下面学什么呢?就是基于角色和权限进行访问控制。那这是什么意思呢?大家注意啊,比如说啊,我们刚才的操作中,我只要认证成功,是不是就能访问我这个内容啊,但是我访问内容过程中,我可以做个授权,假如现在我登录,我只有让管理员才能访问,如果不是管理员帮我这个路径让他表一个没有权限,所以咱们下面就对这个角色和权限进行一个访问的控制,也就是通俗我们所说的授权的操作。那怎么做呢?我们先浏览一遍啊,在这过程中呢,一共有四个方法,第一个叫has also。
01:08
第二个方法,这个方法。叫害s an,还有一个叫害肉,一个叫害s an米肉,所以咱就演示这四个方法,它该怎么使用,怎么进行基于角色和权限的访问控制,那下面给各位就是详细来讲解一下这个具体操作。首先我们先来看里边的第一个方法,这个方法叫has author方法。那各位小这里边,然后咱们做一个详细的一个演示,这是里边的第一个方法。然后这个方法什么意思呢?给各位解释一下啊,大家看啊,Hasights是不是有有的意思啊,Author是不是有权限的意思啊,它就表示啊,你当前的主体具有指定的权限,如果有的话,返回处没有的话返bos,比如我当前的用户,他需要是管理员才能访问,比如需要是我的in才能访问,如果你的用户有我的in的这个角色或者这个权限就能访问,如果没有的话,那就不能访问,这叫has also,当前主体具有指定的权限,有的话,返回处没有的话by Bo,这就是里边的。
02:28
第一个方法,它的一个具体描述,然后下面给各位我们来详细演示一下,看这个咱该怎么去做,那我们来演示一下啊,咱该怎么做。首先第一步咱们就是还是在我们的配置类里边来设置一下你当前访问的那个地址,或者说访问的路径,它有就是哪些。权限或者哪些权限才可以访问,这是第一部分,咱们需要设置配置类,那给各位设置一下,我们来到配置类中,这里边注意看啊,在这里边呢,我把DO1先去掉啊,是我之前自己测试的,然后在里边怎么做呢?咱们还是加这个方法叫aunt。
03:13
Match这个方法里边加上你要设置权限那个路径,比如我们设置就是test in desk,然后在后面加上它哪个权限上访问,我们用这个叫has also,里边给这个权限起个名字,比如我叫mi,那这样的话什么意思?给大家做一个描述。它就表示你当前的登录的用户,它只有具有这个就是我的means这个权限。那才可以访问我们的这个路径,就是test index,你用这个用户名虽然能登录,但是登录之后呢,它必须有这个权限才能访问,没这个权限是不能访问,这是里边的第一部分,在配置类中设置你当前用户可以访问这个路径的一个权限,咱用的方法是这个叫has u,就设置这是里边的第一步。
04:18
然后这步做到之后呢,我们的第二步,第二步怎么做呢。咱可以在我那个user details。Service里边。把我们返回那个user对象里边设置它这个权限,就是在user detail service里边做设置,那我们来找到啊,就是咱今天写这个就是detail套里边大家看啊,这里边是返回啊,第三个authors咱之前没有做这个功能,只是我们大概写了一下,在这里加一个什么,就加上跟你当前这个相同的一个权限,这是不是叫mi,然后这里加什么也加上一个叫mi,那这样的话,你这里边查出的用户就会有这个d means这个权限,然后他就能够进行访问,所以里咱还需要在这位置做这么一个设置。
05:12
在里边加上一个mi,跟你前面那个要一致。这个是咱们的第二步,所以我们这么做就完成了第一个方法的这么演示,里边就是来实验,然后实验之后咱们来做一个测试,看一下效果啊,比如说我这么来做啊,咱们现在比如说啊,我这个就是权限,我先给他随便写一个,假如我叫ABC,你注意ABC跟这个mi是不一样的,理论上如果正确的话,咱应该是不是没有权限性访问呀,那咱来试一下啊,我先改成ABC,然后再改成我的Miss,咱来最终做个测试,咱就一个一个来试一下,看一下效果。那各位看啊,现在我启动。
06:00
来到咱们这个路径,在里边用用户名Lucy密码123做个登录,那大家看啊,我现在登录一下。大家看什么效果?返回什么,你看啊,这句话obbid是不是禁止啊,403表示什么意思,就表示它目前没有这个访问权限啊,当然这个页面咱可以设置,比如咱再完善,当然目前你发现是不是肯定不能访问,因为里边你没有这个操作权限,它会给你返回的这个页面。给各位标注一下啊,当你看到这个页面就表示你没有这个。访问的权限,它返问这个状态嘛,叫403,就是没有权限访问,所以这个啊,是咱们做了一个测试,比如现在我给他改回来,改成我们的。DMI是不是跟那个一样了,都叫mi,那咱们再做一个测试,看一下效果。然后再给他,给他也是重新启动,我们来试一下哈,看它是什么样的效果。
07:06
现在我来启动,启动之后到里边重新访问刷新,这个是LUCY123,咱们点log in。大家看是不是能仿进来了,因为我当前的用户有我的Miss这个权限,所以它就可以进行访问,所以这是我们基于角色和权限进行反问控制中的第一个方法叫has u方法,用这个咱们完成的这么一个测试,各位把它记住,这个方法特点就是当前主体具有指定的权限,比如说的简单点啊,这个一般只针对某一个权限操作。如果你有多个,那是做不到,比如说我现在什么叫多个呢?假如我这个用户啊,他具有这个我的min的权限,也有这个肉的权限,而我这个路径呢,我的面和肉都可以访问,那这属于多个权限,或者多个角色这种场景,那这种场景用这个has also它是做不到的,咱需要用下一个方法,就这个方法。
08:10
大家看啊,这个是什么。安米什么意思,是不是任何呀,它就表示啊,就是你有多个权限或者多个角色,用这个来设置我们那个has out只针对某一个进行操作,那我下面把这个方法给各位进行演示,就你理解为这两区别是什么呢?咱们刚才演示第一个方法针对某一个这个权限,然后这个第二个方法针对你的多个权限,比如说这个路径管理员可以访问,普通用户也可以访问,是不是有两个权限,所以用这个方法。Has any方法,那给各位咱们来演示一下啊,看一下它的效果是什么样的,我们来做个演示。比如说啊,我这么来试啊,假如现在呢,比如说我这个里边的,除了有这个我的命角色之外,它还有第二个角色叫这个manager,但是方法我先不改,还是用刚才这个方法,咱们看现在能不能访问啊,你看啊,我访问路径,我的mean manager都可以,但是我当前用户只是谁,只是我的密,咱看我这么写能不能保问,就验证一下刚才我说的那句话,Has al只针对某一个权限的设置。
09:25
多个他做不到啊,但是现在我写了多个。展示一下啊。你看现在怎么样?403嘛,我这里写到adin manager都可以访问,我也是adin,但是它访问不了,因为我这里是不是有两个权限,所以它做不到,当你有两个权限怎么做,需要用下一个方法,那各位来写下啊。我这里写下,这是第一个方法。给各位加个注释啊,这个方法。然后咱们再写第二个方法。这个方法写法跟上面类似。
10:02
Aunt match,加上咱们的通信test。一。Desk,然后注意后面这个方法跟之前不一样了,它叫has,什么any author里边加上你的权限,所以咱们用。这个方法,然后这个方法里边呢,你可以加多个,比如我加一个再来个manager,它就支持多个。然后咱们现在把这洗完之后,我们再来试一下啊。给它换成了安这个方法,你看我现在安表什么意思,当你用户权限中只要有轻的某一个就能访问,而这个做不到,比如我这里边的admit manager,我里边是不是有我mi,那它就应该可以访问,这个叫any这么一个方法。最大们完成了这么一编写。我把这个给各位截过来,跟之前那个过程是一样的啊。
11:01
咱们也是在配置文件中,就配置类中做配置,然后在我们的这里边加上这个。这个都一样的啊。把这个给各位。截过来,然后咱们做这么一个测试,看一下最终的结果是什么样的。那咱们来试一下啊。这个呃,刚才呃,我重新启动一下啊。重新启动一下,然后咱们再试一下效果啊。Mi manager,我担心用户是mi,现在来到这里边,我们刷新,然后改成Lucy。123咱们登录。大家看是不是可以了,就现在用安的时候,你可以设置多个权限,只要满足氢的某一个就可以进行访问,这个叫has an的author这么一个方法,它的一个使用。所以现在啊,我就把里边的两个最基本的方法给各位就演示出来了,一个has。
12:03
一个害按各位把两方法给他要住院使用,它用于设置基于这个权限进行反控制,你注意两方的区别,通俗列就是第一个方法针对某一个权限,第二个方法针对多个权限。这个我们就演示完成了。
我来说两句