00:00
各位同学大家好,下面呢,我们继续来编写用户认证功能,咱们刚才呢,写到了这里,把这个方法已经完成了,那下面咱们编写自定义过滤认证的过滤器,咱们开始进行实现,那这里边我来写一下,这些我先都关掉,然后咱们来到我这个spring里边,在里边我们进行创建,首先呢,我们在里边先来建个包,这个包就叫。Filter。然后创建之后呢,在里边创建第一个过滤器,就是认证的过滤器,咱给过滤器起个名字,比如我们起个名字啊,就叫这个。Token。捞个印。Filter做个创建,创建之后呢,让它继承一个类,就是咱们刚才看这过滤器,我们写一下啊叫username。然后叫password author filter,让它做一个继承,这是我们写到的,然后写完之后呢,在里边我们来重写它的方法,首先第一个我们先写它,这个就是构造方法,这构造我就直接复制一下啊,来到课件中,咱们看这个构造中就是这个结构。
01:14
把这个写一下啊,然后构造中特别说明我们写的目的是什么,我这里加个注释就是构造。首先大家看啊,第一个设置它这个对象,然后这里边设置它不仅是posts,别的也可以,主要是这里边是核心的,大家注意啊,我们刚才做那个入门案例中,它是不是有一个默认的登录页面,刚才咱们测试应该见过有一个默认的页面,而现在我们要让他指定是不是我们那个登录页面,就是到我们登录的路径,所以在里面做设置,这是我们当前的登录的路径,这是第一个构造,然后第二部分加入里边的方法,主要咱是三个方法,第一个获取你的认证信息的方法,第二个成功,第三个是失败,那咱们啊可以到他的这里边把那方法复制,然后给他重写一下,第一个方法其实就是这个。
02:08
我把这个啊直接复制,咱给他就重写一下啊这个方法。呃,直接拿过来啊,就是它。然后放到我们的这里边。我这里写一下啊,它就是获取咱们那个用户名和密码,然后进行认证的这么一个方法,也就是他。这个我给它复制过来。然后咱们看啊,这方法上其实我可以加一个这个overri就重写啊,这是第一个,它里边有request,就是请求响应,然后之后呢啊,这里边我先re now,不让他报错,咱一会儿再完善啊,一会咱再写,先把方法先写完。瑞纳不是报错,然后之后呢,在里边还有两个方法,一个是登录成功,或者说认证成功,一个是认证失败,那咱找一下啊,找到这过滤器这个负类。
03:03
认证成功是里边的,就是往下看,应该是这个方法叫successful I啊这个方法,我把这个直接咱们也是拿过来就是它。方法比较长啊,咱们复制一下。这是成功的方法,咱们放到这里加个注释啊。认证成功,它就会进行调用,就是这个方法。然后之后呢,还有一个就是认证失败会调用。咱们找一下失败的方法应该在下边就这个unsuccessful obcation,我把这个咱们快速也是复制一下啊,就是它啊这个方法。呃,在这里。鼠标不太好用啊,就是这个方法。呃,这么复利一下就是它啊。啊,少一个括号啊,现在就可以了,所以我们现在把这方法都拿过来了,然后在里边咱为了看着是否写正确啊,把这o right加上,如果的加上之后不报错,那方法肯定是写对了。
04:11
这样的话就完成,完成之后呢,最后写里面那个具体这个逻辑,第一个就是获取用户名密码,我们进行认证过程,那咱来获取一下啊,根据我们的实际,因为咱们现在登录的时候,咱们看一下啊,我们这个方法中。咱们传的是不是这么一个东西,就是一个叫log in VO的这么一个对象啊,但是这种方式,所以咱们获取方式跟源码中会有一点点区别,那这里边给大家写一下啊这个过程。咱们直接就是new这么一个对象,这对象叫OB object啊manager这个对象,然后在里边呢,有这么一个方法,它叫read。写下啊,就是瑞的这个。Y,然后read y中我们可以通过一种流的方式来获取,咱们得到它那个input stream。
05:07
然后第二个就是当前对象的那个class,咱们是log in vo.class诶写错啊,Vo.class。把这个依赖我们给它引入。然后最终它返回到就是我们这个捞VO这个对象,所以咱们用这种方式留的方式把它得到,这是第一步得到用户名和密码,这个过程中呢,有异常咱们加上TRY开给他处理一下啊,第一步我们就完成获取你的用户信息放到对象中。然后写完之后,咱们可以对照源码看一下啊,因为跟大家写的一样,就是把它重写了一下,第一步就做这个,然后第二步做什么就来完成它,那这里边我们写一下啊,咱就直接扭上这么一个对象,我把这个咱直接复制一下啊,就是牛这个对象。咱们拿到这里。
06:01
然后对象中通过log in VO把它两值取到第一个U3。然后第二个值叫password。最终它会返回这么一个对象。这对象啊,这个对象呢,咱用它那个就是啊,用这个来返回。这个我来写一下啊,然后你看啊,啊,就是一个接口嘛,那个是它的时间类。然后返回之后,最后呢,把它我们做一个旅退啊,我就从这里边咱们复制一下,因为跟这个代码基本上是一样的啊,直接复制一下,只是里边那个参数名字不一样,咱给他改一下。改成我们这个名字,比如叫Ken。直接穿进来,所以现在啊,这个过程我们就完成了。以上就是第一个方法,接收到用户名和密码,然后进行封装,封装成这个user name password token,然后最终进行认证,这个完成,完成之后往下来看啊,大家看这两方法,当你认证成功之后要做什么事情,当你认证失败之后又要做什么事情,咱们把这两个进步完成,首先我们看第一个就是认证成功之后他要做的事情,咱们在这里边给各位来写下。
07:24
首先我们看认证成功之后啊,里边有几个参数,咱看最后一个参数,比如我们就叫also,它是什么意思呢?代表当前这个认证对象,那咱怎么做呢?这各位应该清楚啊,咱之前做过,咱们要根据用户信息是不是要生成token,然后把token放到群用头里边,是不是进行传递,所以咱目前肯定还是这么来做,那我写一下啊,第一步。获取你这个认证的这个对象。然后第二部分呢,我们来生成这个token,然后最后把这值我们进行返回,主要就是里边的这么一个过程,那这里边写一下啊,第一个获取信息,我们来完成用这个author。
08:10
就这个对象里边有一个方法叫get,这个方法得到当前这个用户的信息,然后这个是一个object,咱们转成我们当前这个对象,刚才咱们有一个自定义对象,那我们直接用一下啊,就是这个custom。桑。你看就是他,然后咱们起个名字就叫custom user。这里边给它做一个强转,转成咱这对象,然后转成对象之后,咱们通过这个JWT的工具类,咱之前都写过helper,里边的方法可token来生成这个token的字符串,咱们传入两个参数,第一个参数那就是我们那个用户的ID。我们取一下啊,Get这个应该是他system user,因为咱当前这个对象啊,注意啊,别取错get ID这是第一个,然后再取第二个就是custom user.get system user.get username,咱把这两个给他取到。
09:15
这是我们看到的啊,呃,给它取下啊,没取到写完get username,然后现在它就会生成一个token的字母串,咱们通过JWT给它最终生成下,这是我们写的这么一段代码。跟之前都一样啊,然后最后呢,咱们把它就做一个返回,那怎么返回呢?这里强调啊,还是给它放到一个map集合中去,咱们放一下。加上string,加上object,然后map等于上一个哈,Map把依赖咱们快速引入啊,当然你可以把那自动导导包点开,让更加方便,我就手动写一下,让各位看的更明确,然后map里边我们加上这个token。
10:00
这个是偷开,最终做个返回,这个返回呢,我这里边啊,就是咱们看到这个步骤有一个返回信息的工具类,这工具类我在资料中已经写好了,咱直接拿过来用一下可以了,我把工具类给各位拿过来,咱们直接使用一下啊。我就放到我们的这个,呃,这里边吧,我看啊common应该也我就放到common里面了,为了咱方便,或者你放到当前也可以啊,都可以,我就放到common中了。在里边啊,放我们这个。攻击类就是它啊。然后放完之后,咱最终回来用它,我们做一个返回,就加上这个叫response。游艇呃,注意别倒错包啊,是咱当前里边这个。因为这个包啊很容易导错,所以各位要特别注意response u里边的方法叫out,第一个我们传入response,然后第二个呢,传入我们这个map集合,咱们用result.ok然后里边加上一个map,这样的话就完成了,这方法我们来看一下啊。
11:10
你看方法中我们得到一些相关的信息,然后最终把这个用它进行返回,主要是写了这么一个处理。这个啊,我们就完成到这里,所以这时候我们写的成功方法,然后最后呢,还有一个失败方法,咱把它最终完成。失败方法呢,我从课件中咱们就直接复制一下了啊,就是里边的这个方法,我把这个啊给各位直接拿过来。然后咱们啊快速看一下这个方法。首先啊,这里边有个参数,就这个exception,就是它异常,然后在里面做这个判断,如果它是用异常做这个,否则返回这个。这个啊,是咱完成的认证的过滤器的实现,这个我们就写到这里,所以各位把这个过程要特别清楚。
我来说两句