00:00
好,咱们确认了啊,这块呢,如果当前登录用户没有相关角色啊,这块呢,哎,它是通不过咱们的角色校验的,它会抛相关异常,但如果有角色呢,哎,咱们是不是就可以放行了,对吧?那咱们验证一下,哎,如果有相关角色,哎是否能给他放行,那怎么去验证呢?很简单,在咱们的买run当中啊,去添加相关的,哎这个获取角色信息就好,但是各位啊,咱们去把这个功能实现一下,那这块呢?诶直接在咱们的买RA这个方法当中,诶之前咱们是不是有自定义授权方法对吧?诶咱们在这儿啊,在这个方法当中,这个方法跟底下的啊,咱们的登录认证方法差不多,自定义登录认证方法差不多,都是去获取一下,哎这个相关的啊,持久化信息里面,比如说咱们的呃,数据库里面存的用户的角色或者权限信息,然后呢,返回给咱们的S啊,用来做授权认证的啊,这个明确一下咱们的方法。
01:00
的一个用处就可以,好在这儿啊,咱们先去按骤来先去创建咱们存储这个角色和权限的这个信息的对象,把它创建出来,第一诶创建对象,创建对象啊,这个用来什么的封装或者存储啊都可以封装吧,哎,封装咱们的当前登录用户的权限和角色。当前登录用户,对,诶这个给他配的这个角色和权信息啊,咱们直接给封装到对应对象里面,那那这块呢,咱们就直接用啊对应的类吧,啊就是我记得没错的话,就是simple啊,咱们的simple的啊这个啊authorization啊,Info信息啊,咱们把这个相关的对象创建出来,就是第一个啊,咱们去直接简单点就叫info吧,哎,In for对象创建出来,咱们直接去new就可以了啊new这个。直接去拗一下啊,这个相关的对象就好好拿到对象之后呢,那下面什么是不存储角色对吧?当然这块呢,哎,如果严格意义来讲,咱们的角色是应该存到数据库里面的啊,从数据库里面获取角色信息,再C到对象里面,但是呢,咱们这块先模拟一下看看啊,咱们先试一下给他一个啊in角色,哎,看到底能不能放行啊,测试一把存储角色,存储一下相关的角色,那这块呢,就是啊,咱们对应的直接拿info info点啊,咱们去C入相关角色ADD哎,肉啊,这个塞入角色信息,咱们就塞入角色名就成了,就是咱们之前校验的这个啊的in啊,咱们判断一下你有没有这个iin,如果有的话C进来,然后直接把咱们的,哎,第三步返回角色信息就成三啊,返回返回角色信息。
02:59
啊,返回咱们的这个信息吧,Ino返回信息,好,咱们直接把这个音符啊,直接return就好啊,完成咱们的获取角色设置,角色返回,然后通过咱们sir进行一个诶角色校验,咱们试下看看到底好不好用,哎,再启动咱们对应的工程啊再测试一把,那这块呢,诶,咱们再回到它登录的那个页面啊,就是locking。
03:28
好,应该已经啊,这个启动前啊,咱访问一下哎,进到登录页面,咱们这回呢,同样登录,然后呢,验证一下这个相关角色,看这回能否测试成功啊试一把还是张三,还是这个Z3啊咱们进行个登录,好登录进去了,就是咱们对应的什么呢?相关的诶这个诶登录后的界面,咱们去测试一下,授权各位是不是验证角色成功啊,诶你只要有相关角色就能通过,就能进到咱们的接口服务当中,哎,这是啊,咱们对应的哎,设置相关角色进行验证的操作啊带着各位咱们先去过一下,那真正咱们的系统实践这些东西,角色信息是不是应该存到咱们的数据库里面啊。
04:13
啊,所以这块呢,哎,真正咱们使用的时候,哎,咱们得麻烦一点,创建相目库表,角色表啊,设置角色相关的信息啊在这儿诶创建角色表,设置角色信息啊这块呢,角色表为提前创建好了,咱们去看一眼啊在这儿,哎,咱们对应的角色表哎有相关字段啊这块啊角色编号,角色名描述哎显示名称,咱们对应的就是啊啊in啊创建一个in管理员的相关的角色,然后之后呢,再确定咱们的角色跟什么,是不是用户的一个映射关系,对吧?哎,角色跟这个诶用户的映射关系在这儿啊,还是参考咱们课件啊创建相关的,诶这个肉user表啊,咱们去创建角色跟用户的映射关系在。
05:02
在这儿哎,咱们去把这个创建出来,那这块各位可以看到啊,这初始化的数据啊,咱们在这儿,呃,用户ID为一,角色ID也为一,咱们确认一下啊,用户ID为一的谁,张三角色ID也为一的谁,是不是咱们的管理员对吧?哎,有这么哎对应的啊这个相关的映射关系,当然咱们同一个用户可以什么呢?给多个角,给他赋予多个角色啊,这个一个角色呢,可能对应的有多个什么的用户,所以这块呢,咱们单独创建一张表,做这么一个关联查询映射,好那这块呢,哎,咱们确认好这些信息之后,哎,咱们需要做一个什么事儿,是不是查询啊,咱们的根据用户去查询咱们的角色信息啊,啊,这个思扣就相当简单了啊,咱们简单写一写。啊,咱们简单去写一下这个相关的,这个相关的思考啊,很简单啊select。Select星啊,然后呢,哎,From咱们对应的表啊,咱们所对应的哎相关的表,比如说啊,我要查角色信息吧,啊角色肉,哎角色信息,然后呢,我想查角色信息条件什么where啊,这个相关的条件啊是什么?是不是咱们得是跟用户相关联对吧?诶当然你可以进行什么呢?关联查询,咱们也可以什么呢?ID诶我可以设置条件in啊in相关的条件,我这个查询的结果只查下我用户的什么呢?哎,这个相关的name就可以啊查询用户name那印什么呢?诶在这儿创建咱们的子查询啊,在这儿我需要做的事就是什么,是不是查询出咱们的,哎这个角色ID啊,怎么查询角色ID,各位是不是有映射关系啊,别忘了他select啊,咱们进行一个相关查询啊select星啊,From咱们对应的表啊,比如说啊就是啊,不是比如说啊,就直接就是它了啊,咱们的角色相关的,诶角色跟咱们的。
06:56
Userr相关的映射表啊,咱们根据这个映射表进行查询,Where啊指定下。
07:03
Where指定一下咱们的对应的UID啊,这个用户ID等于什么啊,指定一下,然后呢,之后呢,咱们诶返回的信息不是全部啊,就返回一个关键的信息就成,哎,Rid啊,角色ID返回就成,那这块咱们的UID怎么获取,是不是还可以写子查询对吧?在这诶再写一个子查询啊,咱们进行一个诶再写一个子查询啊诶中文了哎,再写一个子查询啊,咱们在这里面去进行一个查询操作,查询是不是咱们的user表了,对吧?还是select啊这个思考啊,并不复杂,Select,哎,这个相关的什么信息啊,Select咱们查ID吧,还是查这个,呃,关键的主页ID,然后呢,From,哎,咱们的user色表,哎,User色表where啊,Where什呢,别忘了咱们用户名是唯一的啊,Name等于什么呢?张三。进行一个查询。
08:01
把这个进行查询啊,这个并不复杂,诶等于张三咱们进行一个查询啊,实现咱们的诶这个根据用户名查询咱们的角色名啊跑起来各位是不是查到了啊,The mean,当然还有配的别的这个角色啊,哎,这块可以看到相关的信息啊mean查到啊,这是查询相关的诶角色信息,咱们把角色信息拿到手啊,这是啊带着各位咱们说说这个思扣下怎么写啊,明确好思扣之后,哎,咱们去写一下这个相关的什么的这个程序,然后实现相关的查询,其实这块参考课件也可以啊,在这儿可以看到诶实现咱们的这根据用户名查询咱们的角色名相关的S口,那这块呢,对照咱们去实现一下哎,咱们的map的这个接口方法啊,这个把这接口方法实现出来啊,那这块进到咱们对应的map里面啊,进到看下在。进到咱们的工程当中,先把它停下来啊,咱们把这个map啊,我看一下是在哪儿,在在这,哎map啊,User map,在user map里面咱们去实现相关的,哎方法啊,这块实现咱们的接口方法创建一下,诶返回结果不用多说,诶一个list啊,因为这块呢,哎一个用户可能会有多个什么呢?哎角色啊,在这儿设定一下,它里面就是角色名啊,就是咱们字符串,哎这个相关的发型流程啊,起名呢,就是获取啊,我还是跟课件保持一致吧,哎,获取下角色相关的什么呢?哎,获取用户角色信息啊,这个获取他的用户角色信息的map方法,然后在这儿该加什么呢?哎,这注释加注释啊,咱们对应的参数paramer。
09:44
哎,这设置一下咱们的参数就是什么,就是啊咱们对应的身份信息啊,这块呢,我就不敲了,参考课件,哎身份信息哎,咱们传身份信息进来也是,也就是咱们所对应的什么,哎用户名啊,你传进来,然后之后呢,哎,咱们设定一下对应的范型,那肯定是字符串类型了,哎,这个用户名传进来啊,字符串类型的啊,咱们对应的啊参数也也叫它吧啊咱们把这个接口串列出来,然后呢,实现它两种方式,一个咱们可以采用什么呢?创建X ma的文件的方式实现啊这块的另外一种方式,咱们可以加注解,直接加select啊,直接在这加select相关注解就好。
10:26
Select注解啊,咱们把这个相关的S扣拼写进来就成,我就不再敲一遍了,参考咱们课件啊,添加一下这个S扣句,设定一下它所对应的这个相关的参数啊,查询完的结果啊,这个咱们返回的这个角色信息封装到咱们的list集合当中啊,这是要实现咱们相关的map接口,好呢,这个map实现完了以后,继续往前推,该到什么,是不是service维层了,对吧?在service维层啊,咱们去实现根据什么的用户的哎,这个相关的用户名获取咱们的角色信息啊,这个相关的service方法,咱们直接进到这个service,呃接口当中。
11:10
打开咱们的四位子目录,打开咱们的service接口,实现相关的接口方法根据用户或呃查询角角色。根据用户查询角色信息啊,它是一个什么呢?一个类似的集合,那这块呢,哎,返回的这个结果不用多说,还是什么呢,是不是list对吧?哎,List发型,然后呢,还是这个字符串类型。哎,字符串类型的这个集合,然后呢,咱们起个名吧,啊,就叫啊,这该引包隐her包啊,起个名咱们就叫什么get user,呃,User role info来获取这个用户相关信息,User啊。Info获取一下咱们的用户的角色信息来传递相关的啊,就是咱们的用户名,也就是咱们的啊。
12:08
认证用户啊,他的认证的这个相关的用户的相关的身份信息啊,哎传递进来,然后之后呢,诶,咱们去实现一下这个相关的方法,哎,获取用户,根据用户查询角色相关信息啊,咱们把这个方法实现出来啊,进到咱们色子实现,然后呢,用快捷键来实现一下方法。该加注释加注释啊,根据用户查询角色信息,那这块呢,也非常简单啊,咱们是不是有user map对吧?哎,直接让user map啊调user map的接口,咱们经查询就成,诶直接进行一个查询操作,传递相关参数就好啊,查询完结果返回就可以了,哎,这个service咱们创建完成啊,这是哎,把service方法咱们实现出来之后,诶应该打开谁是不是买room对吧?哎,咱们自定义的授权方法这块就不再是什么呢,模拟一下哎这个相关信息了,咱们是不是真的要到数据库里面去查一查,诶当前登录这个用户,哎,他的什么呢?这个角色信息是什么?那把这个步骤再去捋捋啊,在这儿需要添加步骤,我把这序号也改一下,首先创建咱们封装的这个对象,这不用多说啊,这块呢,但是对象这块在之前啊,咱们先去把该获取的信息全获取到啊,在这儿啊,在这块啊,把这个步骤再。
13:30
梳理一下,首先第一步啊,我先要获取当前用户的身份信息啊,得把身份信息获取到啊,其实这块跟底下这块相对似啊,直接复制了哎,获取用户身份信息啊,咱们直接获取用户的身份信息,然后之后呢,调用咱们的接口方法获取什么,是不是角色信息啊,跟这个底下也相类似啊,为什么说这块呢?啊这个步骤啊,这个相类似的原因就在这儿啊,这个调二步调用业务层啊,获取什么呢?是不是用户的角色信息对吧。
14:04
把角角色信息获取到,哎,这是咱们要做的第二步,哎,拿到这个什么呢?角色信息以后,哎,咱们创建对象,存储角色啊,那这个我就直接把这两步合成一步了啊,这是第三步,把创建对象,然后呢之后哎,咱们存储数据啊,把数据封装进去啊,这是啊咱们对应的存储这个相关的信息,角色信息都存进来,然后之后呢,最终返回啊,这是第五啊第四步最终返回啊,咱们把前两步都实现出来啊,这很简单了,咱们拿到这个相关的呃,这个认证的什么的信息之后,直接点一下获取他的这个什么呢?诶身份信息直接通过他啊去获取就成。好,认证信息点一下啊,咱们get一下,诶点一下诶get下获取他的身份信息啊,诶主要身份信息啊,这个拿到它,哎,这个还是哎转化成字符串啊,这个把这个身份信息拿到手,哎,这是咱们的身份信息,先拿到手,然后再根据咱们的身份信息再去什么呢?诶去获取它的决色信息,比如刚刚咱们写好的这个接口方法,哎,直接去访问数据库进行查询就好,查询它的相关的角色信息,直接调接口方法就可以在这儿调用刚刚创建的接口方法,咱们get一下,获取一下这个角色信息啊,传递咱们的身份信息就好,直接塞进来,拿到返回的结果是咱们的角色的一个什么呢?哎,一个集合数据,这名字我改一下啊,咱们简单点。
15:42
哎,直接就是Rose啊,这个拿到咱们的这个集合的啊,这个呃,集合类型的角色信息,把它拿到手,然后之后呢啊,咱们输出一下看看吧,还看一下这个角角色信息啊,咱们看一眼当前的角色信息,咱们输出来看看点SOTV啊,咱们输出一下这块就是当前的角色信息。
16:06
当前用户角色信息。啊,咱们去输出一下看看看能否拿到这个相关信息啊,然后之后呢,创建啊,咱们刚刚写过的,哎,创建相关的对象啊,用于咱们的诶角色跟权限信息的封装,然后之后呢,再把咱们查询完的集合数据诶塞进去就可以了啊完成咱们的哎,数据的一个存入啊,存入相关性啊等会啊这块呢,为什么报错,因为类型参数不匹配,对吧?咱们应该调用一个a DD Rose啊是一个C复数信息,应该放集合进去了,哎,换一个方法好,这时候咱们把这个相关的数据进行封装,最终返回就好,诶完成咱们的诶关于这个呃,自定义授权方法的一个什么的改造啊,只是完成咱们的方法改造,那之后测一把看看吧,哎,看到底能否啊实现咱们的相关功能,哎,还是跑起来啊,这个前端页面不需要改啊,咱们测一把看看,诶直接跑起来。
17:13
来,咱们测试一把。好,服务启动起来,8080啊,咱们再去登录一下,还得再重新登啊,哎,这个哎直接是。Locking啊,咱们再次登录一下这块呢,还是用张三啊张三,然后呢,Z3进行个登录,哎,直接点登录进到咱们最后的这个,哎,这个登录后的页面啊,还是测试授权,咱们去确认一把啊,点一下诶可以看到验证角色成功,咱们进到输出去看一看啊相关信息,首先咱们可以看到啊,进行数据库查询了,然后呢,之后呢,当前的用户角色信息,由admin还有这个user ma啊这是我这个测试创建的这个角色啊,然后呢,之后登录认证角色成功啊,这完成咱们的一个测试功能啊,这是真的去到数据库里面查询,进行一个角色获取,然后呢,通过S进行个角色认证。
我来说两句