00:00
好,咱们再去了解一下授权流程啊,其实这块呢,跟咱们登录认证流程啊相类似,还是看底下这个流程图啊,首先还是咱们的对应的用户啊,Subject,哎,咱们通过subject调用相关方法it's permitted或者什么呢?哎,去调用has rock啊进行一个判断,来判断有没有相关权限,而咱们的subject呢,会把这个相关的操作委托给咱们的核心模块,就是他啊,Security manager啊,由咱们的核心模块进行一个操作,而核心模块呢,找到真正什么的管理授权的,由它author write啊进行一个什么呢?授权的一个校验啊,咱们去进行一个呃,这个权限的一个判断,那这块呢,Authorizer啊,它是真正的一个授权者,如果什么呢?诶,咱们调用这个is permitted啊,我判断一下有没有相关权限呢?哎,咱们会指定一下你所对应的这个权限,咱们会通过什么呢?诶咱。
01:01
咱们的permission啊,这个result啊,进行一个什么呢?转化,咱们把这个什么的相关的名称转化成咱们的,哎,Permission实例啊,权限实例,然后之后呢,诶实例有了下面什么呢?是不是得跟咱们自己存的诶权限信息进行个比对啊,那权限信息怎么去获取,一个我可以通过咱们的ini文件获取,再一个可以通过数据库获取,诶获取到哪?诶还是他RAM啊,咱们的RAM对象啊,通过咱们的RAM对象,然后呢,去什么呢?进行一个获取,获取咱们的subject,诶这个用户所对应的角色权限啊,这个呃,用于咱们的一个角色权限的校验啊,这是啊,哎,通过底层获取相关的数据过来,然后呢,再通过咱们的授权者进行个判断,哎,咱们的什么呢?哎,授权者会进行个判断啊,判断咱们的rams啊里面,哎,单个或者一个啊,诶获取相关的什么呢,角色或者权限啊,跟咱们除。
02:01
传进来的角色权限进行个判断,诶是否一致啊,如果是多个呢?哎,他们上面哎这个流程这说的也很清楚啊,如果是多个,哎RAM会什么呢?诶给咱们的相关的这个,诶对应对应类啊进行一个什么循环判断,然后之后呢,诶如果是一个,哎咱们就直接去调用方法进行判断了,然后呢,诶进行个匹配,是否有相关的角色或者权限啊,如果有返回处啊,如果没有返回false诶这个判断一下咱们权限是否什么呢?诶有是否存在啊,这是啊咱们对应的诶授权的相关流程啊各这块呢,咱们也需要了解,其实这块呢,跟咱们的认证相类似啊,都是通过咱们的呃security manager啊,咱们的管理器进行一个管理啊,完成咱们的一个授权的一个校验啊,这是咱们对应的流程,那这块呢,诶,咱们真正的实例怎么实现呢?但各位啊,咱们去实现一下,首先啊,先给咱们的呃,I。
03:01
在这个配置文件呢,添加一些相关的角色配置啊,在底下各位看到,哎,比如说咱们设置好这个用户啊,有相关的用户名密码,后面设定相关的角色啊,角色一角色二,咱们就给它添加上就好啊,直接进到工程当中,打开咱们所对应的配置文件,把角色直接加到后面就好啊,角色一角色二,然后之后呢,给咱们的这个DEMO例子代码,咱们再翻回咱们写的DEMO list里面,这儿登录成功之后,咱们就可以在这儿直接进行判断啊,判断相关的角色哎,是否存在啊,咱们在这儿判断角色算是第五步吧啊判断角色。判断一下角色啊,咱们还是直接拿subject这个对象调方法就成,直接点一下,哎,咱们去调相关的方法,哎判断一下是否有相关角色has,哎判断一下是否有相关的角色存在啊咱们哎写一个就是刚刚咱们创建的这个角色一吧,哎判断一下角色一是否有啊,咱们去什么呢?哎调方法去判断一下是否存在这个角色一的这个,哎相关的角色啊判断一下,然后之后呢,咱们输出一下来看看输出的结果。
04:22
哎,输出一下,看看有没有这个相关角色,我哎,我还是把这个标注清楚啊,是否拥有此角色。啊,是否拥有此角色啊,咱们进行一下判断啊,这是咱们什么呢?哎,判断角色相关的信息啊,咱们跑一下看看,直接跑起来。好诶,登录成功可以看到是否拥有此角色啊,为true啊,这可能直接掉放华就程啊,如果各位这块呢,还是对他感兴趣了,可以再翻进去看看啊,咱们再翻一翻它对应的源码啊可以呃,看到它最终还是通过咱们什么呢?呃,再回到咱们的流程当中啊,通过咱们的角色的这个诶授权者进行个判断啊,调授权者啊这个相关的这个方法进行判断的啊,就不带各位咱们在一层层翻了,这块跟咱们登录认证相类似,然后呢,再往后啊啊,咱们判断了一下什么呢?是否拥有此角色啊,咱们进行了判断,那判断权限怎么去做啊,也很简单啊,咱们参考这个相关的课件啊,这块呢,去什么呢?哎,咱们跑一小弹幕例子试试,也就是给咱们的,诶,这个ii文件再去配相关的角色跟权限的一个对应关系啊,咱们把这个权限信息给添加上,直接进到这个工程当中啊,打开咱们对应的配置。
05:51
文件在这儿,诶添加咱们的呃,角色权限信息,也就是咱们的第一个啊,这个角色一啊跟这个权限的信息,比如说啊用户的一个insert啊插入的功能,还有咱们的用户的一个selectt查询功能,诶咱们去添加相关信息,再去判断权限啊,再去判断一下,诶再回到咱们的DEMO例子当中,哎,再去跑一下啊,咱们去看看这个判断这个权限相关的操作,这算是第六啊判断权限。
06:24
哎,咱们去看看这个权限的一个判断,还是通过咱们对象,哎,Subject就可以啊,调相关的方法,哎,点下我判断一下,哎,还是点is判断一下,哎,咱们的哎permitted啊,咱们判断一下有没有相关的权限,比如说呢,我想看看啊,我到底有没有用户的一个呃,隐色插入权限啊,这块对应的写入权限有没有去进行了判断,然后之后呢,咱们也可以去拿到这个相关的判断结果,布尔类型的,那咱们判断一下这个到底你有没有这个相关的诶权限咱们去判断一下,那在底下咱们也去输出一下啊,看看是否拥有此权限啊,咱们输出一下,看看相关的结果。
07:15
来判断一下是否拥有此权限啊,这块呢,哎,也是拿这个相关的结果,咱们判断一下看是否拥有啊这个相关权限啊,咱们去跑一下看看啊,再去跑一下。好,各位看到诶也没有问题啊,这块呢,诶正好跟咱们的什么呢,配置的那个权限是一样的啊,咱们可以判断诶当前登录用户啊,当前这个subject是拥有哎这个相关的这个权限的啊,就可以做哎这后续的操作,当然咱们还可以什么呢?啊用别的方式啊,咱们还可以参考课件啊,我还可以用什么呢?哎用check下,我检查一下有没有相关权限,那这块呢,如果用check方法的话啊,它的特点是什么呢?哎,它是没有返回值的啊如果什么呢?诶这个没有任何异常,就直接往下执行,那证明你有这个权限,那如果什么呢,没有权限的话,会抛异常出来,诶这个咱们确认一把,哎,咱们也是,哎把这个check方法也复制过来,咱们测试一把看看啊在这儿啊这块呢,再去测试一把,哎,再跑起来。
08:25
好啊,咱们可以看到,哎,这块可以看到,还是这个输出啊,有相关权限,那咱们换一下,随便改一下,诶加一些相关的数据,咱们看看啊,如果检查出没有这个权限啊,上面也给它改一下,哎,没有权限啊,这个相关的两两种判断方式啊,有什么不一样,咱们再跑一下。可以看到,哎在这儿,哎,咱们什么呢?Is啊,这个permitted啊,咱们去判断有没有相关权限,如果没有的话,它返回的是false,那底下这个啊check方式进行判断的话,如果没有呢,会给咱们抛异常啊,这是它的一个区别啊,咱们也去明确一下好以上呢,就是咱们的角色和权限的一个相关的判断,咱们去进行个角色判断,还有权限判断啊,以决定用当前登录用户是否能做一些相关操作啊,这是啊,咱们的还是由C帮咱们封装好了,直接去调它封装好的方法就好,非常的方便。
我来说两句