00:00
下面呢,我们开始项目中整合DWT,那咱们开始整合一下。因为GWT呢,在后面很多模块中都要用到,所以咱们把它整合放到我们的common模块里边的common YouTube中,下面咱开始整合下,首先第一步先引入依赖,这个依赖呢,之前应该已经引过了,就是这个依赖叫JJWT,注意啊,这名字没写错,它就叫这个名字,然后这个之后呢,第二部分我们在这里边咱们建个包,然后把这个工具类给它直接复制过来,然后咱们看一下类里边到底都是什么含义,那我来建个包。这个包我们就叫。现在完成完成之后呢,我在里边把这个类我们最后创建跟课件中保持一致,J wt helper。然后最后我们进行复制。
01:03
把这一部分我们直接说过来,现在这个就完成,完成之后我们看一下啊,这个类里边内容到底都是什么含义,首先我们看第一部分,大家看这里,这里边呢,有两个静态变量,咱看第一个啊,第一个什么意思呢?给大家强调。这个表示我们token,这个就是过期时间,这是第一个,什么叫过期时间呢?就是GT啊,生成字符串能有一个过期时间,比如说约定30分钟,约定一个小时,当超过这个时间,那GWT里边值,那它就取不到了,我这里边为了测试,咱们给他写成这个时间,就是最长时间365天啊这个时间,但实际中肯定不是这么做,咱只是为了测试,实际中你可以写成比如说30分钟,一个小时,两小时等等。然后咱们再来看看第二个值。
02:01
第二个是什么呢?是咱们最终进行这个。加密的密钥,因为GWT生成字符串要进行加密,所以咱根据这个密钥进行加密,这个密钥我也是为了测试写成123456,实际中你可能生成一个随机的一个字母串,或者说唯一的字母串,这是两个,就是静态变量,一个是过期时间,一个是密钥。然后咱们继续往下来看啊,下面有第一个方法,第一个方法什么意思呢?大家看到方法中两个参数,一个是用户ID,还有一个是用户名称。我们这个方法就是根据用户ID和用户名称生成字符串。这是第一个方法。也就是说啊,Token串里边的最终会包含这个ID和名称,那咱们看它怎么写的,大家看啊,首先里边的第一部分叫site subject,是不是咱说的分类或者科目,或者说分组,这里边我们写一个就像一个组名,然后看第二部分这里。
03:13
这是什么?就表示设置它这个过期时间,那什么叫过期时间,大家看啊new date是不是当前时间,然后加上是不是咱这个值就表示当前时间。再过了这么长时间,那这个to就过期了,你再去里边值,那就取不到了,这是第二个过期时间,然后看第三个,第四个,这是什么呢?就是里边那个叫有效载荷,就是放我们的主体的,这个就是重要的信息,咱目前放的是ID和名称,实际中你可能放的更多,根据实际来改,我们这里边以它为例,然后再往下看看这里啊。这是什么?它就表示啊,根据我们这个密钥对咱字符串进行一个编码加密处理,咱用的是这个叫HS512,进行这么一个操作,根据密钥进行操作,然后再看最后一个,他把这个字符串做一个压缩的处理,就给它变成一行进行显示,最终把透文字符串进行返回。所以以上就是我们的第一个方法,根据ID和名称生成一个token字符串,这是咱们看一个方法,这个不需要各位敲,你能看懂里面的含义,以后你用的话,改的话,也就是改你这个subject,改你的密钥,包括过期时间,包括你的重要的信息等等。
04:36
这个咱们叫小这里。然后写到这里之后,因为它是静态方法,咱们直接做个测试,看一下它的效果是怎么样,那我来写一下啊。我们用这个GWT。Helper。里边的第一个方法可ton传入ID,就是一个浪类型,然后第二个用户名称我们就叫这个。
05:02
硅谷最终返回的是一个token字符串,咱们把这字符串做一个输出,然后咱们看一下这个值到底是长什么样子,我们直接执行做一个测试,看一下生成的头文字符串。大家看啊,字符串已经输出了,然后把这字符串咱给他,为了看的明确,我放到一个就是普通的文本文件中,然后根据这里边来看一下他到底长什么样子。现在我复制,然后把它的值咱稍微给它区分一下,为了咱看的更明确。大家看啊,这就是生成一个token字符串,只说它是在一行显示,为了看到明确,我给它分成多个,然后大家看啊,它这里是不是有两个点表示它的组成部分,另外这字符串是进行了编码,并且加密处理,所以咱们肯定看不懂。
06:01
而这个里边你注意啊,咱们后面就通过这个头文字符串进行传递,每次放到请求头里边进行传递,所以咱们的第一个方法就完成测试,完成测试之后我们再来看啊,在我这攻击类中还有第二个第三个方法,我们继续来看看第二个方法。这个方法什么意思呢?就是从啊咱们刚才那种token字符串里边获取里边的用户ID,因为在生成中是不是ID,那我可以从这里边把它的用户ID取到,这是我们的第二部分,然后怎么取,咱们看一下啊这个写法。首先你看啊,先判断飞空,然后这里边用j wts pass就是解析嘛,大家看这个。这是什么?是不是就是密钥,它要用到咱的密钥进行解析,最后得到它的包底,就主体部分,然后从里边把ID取到,所以要用到密钥才能解密。
07:03
这是第二个方法。再看第三个啊,跟第二个类似,只是它得到是这个用户名称。把这个得到。同样这个结构,以下就是两个方法,然后它里边不需要删除啊,这个我就需要在客户端直接不用就可以了,这给它去掉啊,然后咱们做个测试啊。我用JWT。Help,里边这个方法。第一个方法叫做get u ID,咱们传这个ton,从里边把这个值给它取一下。然后我们做个输出,然后同样再取它那个用户名称。我把这复制啊,咱改一下就可以了。然后这里边啊,是字符串类型的用户名称。
08:06
最终把它输出。以上是我们写的测试方法,然后最终我们执行,看一下最终效果,生成token字符串,从里边取ID,取名称,我们看它最终的结果怎么样,然后咱们看啊,这里边报了一个错,大概是哪步写错了啊,我们来看一下,呃,应该是某一步写的不对啊,咱们检查一下啊。好,我们看这个错误啊,它提示呢,说这个string u这个找不到,也就是说到我们这里边的,我们看啊,应该在这行,说这个没有啊,但这个包我们再看一下依赖中啊,应该是有这个包,它找的应该是这个包那里边呢,咱为了测试我先把这行给他先注掉,这行什么意思呢?表示这个依赖的范围,就是现在这个表示我们在运行编译的时候会用到,但是打包时它不会打进去,为了咱测试,我先给它注掉。
09:03
然后咱们啊,最终再试一下啊。看一下这个效果。现在我把这个再进行执行。然后咱们看一下。等他执行完。然后大家看啊,这个是to,这是得到的用户ID,然后这个就是我们的用户名称,所以以上咱就完成了GWT的整合,后面我们项目中就调用这个工具类中的方法进行实现。这就是GWT的一个讲解。
我来说两句