00:00
好了,咱们接着上节课来继续,上一节课呢,我们是获取了用户的open ID啊,以及3K,然后呢,我给大家说了啊,其实后端呢,应该是以这个opend为key去从用户的信息,但是呢,它又不能把这个open ID直接返给前端,因为这样不安全,所以呢,我们需要对我们获取到的数据呢,进行一个自定义登录状态,也是进行一个加密生成的一个toke,而我们最终返给前端的应该是什么?应该是这个token呢标识,呃,并且呢,在上一节课我们是不是也拿到了这个token呢?来在response里面能看到它,好,这节课呢,我们来看一下,当我们前端拿到了token以后要干嘛?那这呢应该叫啊token,来前端获取到了这个自定义登录状态以后,我们看一下啊,是不是应该将它重入storage,并且之后再发?
01:00
业务请求的时候,应该是携带这个状态,也是应该携带这个突克呀,来,那这个时候呢,呃,我们首先要做的是。第三步啊,将自定义啊登录状态缓存到storage中,呃,存储的话比较简单,Set storage这个我们是不是也用过了,在这儿我们用一个同步啊,那K呢,我们就叫它图,然后呢,这个value是不是它对的吧,好,那这个时候呢,来来到我们这儿,我们先把之前的给它清一下,然后重新跑一遍。呃,这边呢,授不授权都行啊,授权一下吧,能看到我们的状态来到storage这里面看一下token和对应token的值是不是有了,有了这个以后有什么好处呢?以后再发请求的时候啊,再发请求的时候应该是要先带上这个登录状态,由后端去验证你的身份啊,验证你的身份来,那这个时候呢,我们看一下你再发请求,最起码是不是要带上这个图坑呀,而我们之前发请求的库咱是不是分装好了,哎,在这儿呢,给大家说一下啊,携带token的方式。
02:26
嗯,我给大家先呃加到这儿吧,市面上常用的啊鞋带,嗯嗯,携带cookn的方式有这么三种啊,有三种,第一种呢是放到什么cookie里边,那第二种呢是放在啊,第二种是作为参数放在URL中啊,第三种呢是放在啊请求头,那第一种呢,其实不怎么推荐使用了,已经啊现在常常用的是后边两种啊,最常用的呢是放在请求头,那也就是说我这需要添加一个啊请求的handleer对吧,然后请求头里面你其实只要需要放一个字段就行,你比如说我放一个to也可以啊也可以,但是呢,呃,大家通常会放这个叫author,是啊,应该叫author,哎,这个字段,那这个单词。
03:26
的,呃,意义是啥呢?呃,这应该是za啊它的,呃翻译过来呢,叫授权,在这呢,其实代表是身份,后面呢,按说我们是不是应该跟一个token呀啊,那这个token的话,我们应该是去哪获取,去我们本地的缓存里面,所以呢,我在外边去获取一下图N微信点get啊storage呃也来个同步获取吧,那这个key呢,就叫嗯,Token,因为我们之前存进去的是不是叫它ST啊,OK,呃,拿到了token以后,是不是在这儿携带着要注意啊,以后每一次都有了toke坑来,那我们去看一下我的请求,让他重新发一次。
04:16
呃,来到network,这是请求啊,我们看一下我们的请求头有没有带上去,嗯,这不是这个字段,然后对应的token,那前端带上了token以后,后端怎么去验证呢?在这呢,我们来写一个测试的接口地址啊,Server,这呢来呃这个呢是测试验证啊身份token的接口,呃,快速写一个啊route.get然后这儿呢来一个test,那里面的内容它是固定的,呃,Ctx,然后呢,我们来一个next,好,呃到呃,在前端这呢,我们去请求一下这个地址啊,请求一下这个地址,那这个呢是呃测试地址验证什么to来同样的我们也去发一个请求,这个请求呢叫呃还是叫request,呃,URL呢?
05:16
的test我们什么参数也不带啊,什么参数也不带,在这呢,我们去等一下它位,呃,Wait的话,那后外边这面下套一个a think好,然后在这呢,来我们定义个result等于它最后呢,我们去输出一下这个嗯验证结果,来后边呢跟一个嗯,Result好,前端写完这个测试接口了,那后端这我们得去做一些处理啊,那第一步我们是不是要干嘛要获取图的值,哎,在这怎么去获取呢?Ctx点呃,它有一个叫request叫请求的对象,里面有个handleer,那这就是我们要的内容,我们先去给他输出一下啊Ctx.body别忘了做回应啊回应,那这呢还是。
06:16
一个测试好了,我们看一下前端这个请求没问题,是不是能拿到,关键是我们看看在服务器端,呃,咱们在这儿打印的这个请求头。Request点啊,这就是那个请求头,其中有一个是不是就是这个突克呀。对吧,啊,有一个字段叫authorization,那拿到它以后来点一个它,诶不应该有冒号啊,保存一下。往下走,那这个是不是就是打印的凸坑,好,这边拿到了凸坑以后,我们紧接着要干嘛呢?啊,应该是去还是利用我们之前这个库叫Jason web token,再去反向验证一下这个token对不对?来呃,怎么验证呢?我们去看一下这个k hob上面它用这个C这个方法呢,生成图坑,其实它还有一个方法在下边游写啊啊叫veryify,通过它呢来验证我们的图肯是否正确,那下面呢有测试用力,大家看这一把呢,调这个方法呢,是需要你把你要验证的toke坑丢进来。
07:38
哎,它去给你反编译,但是呢,千万别忘了你之前这儿添加的附属的这个加密字段也得写对了啊,也得写对了,所以呢,在这一块我们怎么去验证这个图可呢来呃,首先呢,我们应该是用这个方法的veryify在这里面我们应该是把要验证的token是不是拿到那这呢,看的明哎清楚一点,我们最好是先定一个token等于它对吧,拿到了图肯把图N丢进来,别忘了我们的附属字段叫艾特硅谷,然后呢,我在这儿呢去定义一下啊,它编译完的内容,最后呢,我们去给它做一个输出。
08:23
那重新编一下,来看一眼,呃,这我们看看报什么错result啊,这拼错了,来再编译一次。哎,大家看,呃,这。这个应该是啊,这我们前面加一个标识来验证结果逗号再去编译,大家看的清楚一点,这不是验证结果吗?那也就是说这个对象是他反验证之后的结果,这个里边的字段你很清楚啊,这是把我们之前让它加密的字段,但是呢,多了一个什么it来,我把这个呢给它搂过来啊,复制一下放到这,嗯,这个对象。
09:10
呃,首先这两个加密的内容我们塞给他的不用说了,这个itt呢,代表的是什么加密时的。时间,嗯,时间,那也就是说这个呢,呃,不是我们写的啊,但是呢,它也是作为他验证的一个标识,好,那这是验证成功的结果,我给他啊也是一个验证不成功的啊,我们后面随便加一个,随便加一些字段来看一眼。嗯,那这个时候大家看这应该是报错了,这说了invalid啊signalure signalure呢,其实就是我们刚才说的to里边的第三部分啊,就是那个加密的时间啊,那这样的话是不是就报错了呀?啊报错了那说明啥?说明你的身份不对,或者说我们拿到的token,嗯也不对,比如说别人假冒的123 123来我们再看一下啊。
10:13
呃,看他报什么错,哎说这个库验证失败了啊,验证失败了,那这样的话呢,你是不能进行后续操作的,就说你的身份不对,那基于这种情况呢,我们发现他一旦说验证失败的话,是不是会报错呀,那很有可能会影响我们这个接口啊,所以在这呢,我们最好是try catch一下对吧?呃,正常情况下呢,我们让他在这里面如果说对的情况下走TRY啊怎串如果失败的话呢,我们去写一下这个result嘛,等于个false啊,假如说验证失败我返给前端的false,验证成功的话呢,我返给前端一个什么呀,呃,触吧,嗯,这样,呃验证成功,那这个呢,我们也来写一个啊,这呢就是验证失败没问题吧,好,但是这个let得放到外。
11:13
前面去啊,因为它有会计作用,来声明一下,那这个时候我们来看一下前端这一块。呃,第一个验证结果,Notify。嗯,这儿说是没有响应,那是因为他走的失败啊,走的失败的话,我们应该是呃什么呀,CTx.body验证失败,那其实这个我们就不要了啊,不要了来看一眼。是不验证失败,如果说我写一个正确的,这是不是应该放我们传过来的那个请求头里面的图呀,再看一眼。嗯,验证成功,那验证成功了以后,并且呢,他是不是给我们反编译了,那反编译了以后,我是不是能拿到OPPOID,然后呢,拿到用户里边的相关信息,再去做后续的操作,那到这一节课呢,其实就是一个完整的获取用户唯一标识以及验证用户身份的流程,好,那我们就讲到这里。
我来说两句