00:00
各位同学大家好,刚才呢,我们分析了权限管理需要两大接口,一个登录,一个获取可以操作菜单的信息,那下面呢,我们先来做第一个接口,用户登录,用户登录咱们刚才解释到了,它需要生成一个唯一的字符串,咱们用一个工具叫GT,那下面呢,把GT整合到我们的项目中,然后再实现我们登录的接口。那下面我们开始进行整合,首先我们介绍一什么是GT,大家看一下啊GWT呢是一个英文的简称,它的全称叫Jason web是一种叫自包含令牌,大家看这词令牌什么意思?理解为是不是一个通行证啊,字包含怎么理解,就是里边包含用户信息,通过它能实现我们最终这个登录的过程。这是我们u dt,然后GWT体怎么往下来看啊,这里写到一个GWT,它含有三个组成部分,第一个叫投,第二个是有效载荷,第三个叫签名哈希,那咱们往下继续来看啊,首先第一部分投信息,这个是什么呢?里边标注到了第一部分叫HS256什么意思?
01:23
就是你签名用的算法,然后第二个表示它的类型,咱用的是GWT,就是一些公共部分,然后第二部分叫有效载荷。什么叫有效载荷?它指的是你的主体那种,比如说我现在按照我们刚才的需求中,比如现在我根据用户ID、用户名称生成token,那用户ID、用户名称就是咱们的主体内容,把这个内容放到咱们的有效载荷中,这是我们的第二部分。然后咱再看第三部分叫签名哈希,这是什么意思呢?你理解为它是对前两部分数据进行签名,通过指定的算法生成哈希,保证数据不会被篡改,然后它里边按照这个规则最终生成,这是我们提到的啊,然后它的规则中都用到一个算法,叫贝斯64UL,里面就是把一些符号进行这么一个替换。
02:20
所以以上关于它一个简单介绍,我们再重复一遍啊GWT是一个工具,它能生成一个唯一的一个字符串,它的作用就是防止信息被伪造,它有三个部分,一个头,第二个有效载荷,第三个签名,哈希,这是咱们一个介绍,那下面呢,我们在项目中把它整合进去。因为这个GT后面方要把它就到我们首先第一步咱入依赖,就是GT的依赖,那我现在啊,来到咱们这个common中,把依赖我们先给它引进去,我们来看一下啊,之前应该没有。
03:06
啊,大家给它复制一下啊,我们找一下,呃,之前这里边应该复制过了,如果没有的话,你把依赖给它引入,然后引入依赖之后我们继续来看啊,下面我们就写上一个工具类,那我在里边给大家来写一下,我们写到这个位置。在这里边呢,我们来创建一个包。这个包就叫GWT。然后在里边我们创建一个工具类,就叫jt help,这个完成创建,完成创建之后,把里边的内容咱们给他就直接复制过来,因为这是一段固定代码,咱们复制之后,然后给各位详细解释一下这个代码到底是什么含义,咱们先啊完成复制。然后咱们一个一个看一下啊,首先在里边呢,有这么几个组成部分,我先加个注释啊。
04:02
JWT的工具类,大家看第一部分啊,有两个cid,就是固定的值,咱们看第一个值。大家看啊,你说这是什么意思?首先你看它是一个时间呀,你可以理解为它就表示啊,我们一会儿设置生成通文字符串,有一个有效的时间,这就是他的有效时长,这里边我是为了测试,所以写的时间长点,实际中你可能设置成比如说半小时或者多长时间,然后看第二个叫3K。这什么意思啊,就是签名,咱们根据它进行编码加密啊,当然签名呢,实际中肯定不是写123456,我这里为了各位看的方便,就加上123456,根据它进行数据的编码或者说加密,这是我们写的两个固定值,一个是token的有效时间,一个是签名加密的密钥。然后之后往下来看啊,下面我们有第一个方法,第一个方法什么意思呢?大家看两个参数,一个是用户ID,还有一个是用户名称,这个方法的作用就是根据用户ID和用户名称生成一个token的字符串,我是以这两为例,实际中你可能有更多的参数,那家看怎么生成啊,首先第一部分。
05:26
GWTS点。然后咱们调第一个方法表示给它做一个分类,然后第二部分大家看这一行内容,我都加上注释啊,这表示它那个分类。或者说科目啊,科目或者分类,然后第二部分这什么意思呢?设置token的有效时长,或者说有效时间,那大家看怎么设置啊,首先我new date是不是当前时间,再加上我刚才写的这个时间,就是现在时间超过这个之后,那就表示它超时了,比如咱们现在是十点钟,我这有效期是30分钟,当咱们超过了10:30,它就过期了,这是设置有效时长,然后再往下看看这个部分。
06:20
这是什么?就是咱们说到的GWT的第二部分,设置它的主体部分,咱们这里边有两个ID和名称,事迹中可能你有更多,然后除此之外,下面是他那个签名部分。啊,签名部分在签名部分里边,我们根据刚才咱们这个密钥进行加密,包括对我们这个生成字符串进行压缩。以上啊是咱们写的第一个方法,通过它能生成一个token的字符串,在实际开发中,这个位置你可能写别的参数,但是它的结构一样,比如说你现在啊写三个参数,那主体部分你需要设置三个值,或者说你有一个参数,那就写一个值,根据实际来选取。
07:07
这是第一个方法说明,然后这个之后我们来看第二个方法。第二个方法什么意思呢?就是比如说我们现在啊,把token生成了,咱们从生的token串中获取你的用户ID。从token中获取用户ID,然后咱们看怎么做啊,首先第一步做个判断,如果它等于空,直接存的,然后第二个不等于空,咱们进行这个就是字符串中获取,怎么获取,因为咱们这个字符串进行了编码加密处理,所以这里边用到这个密钥啊,就是咱们的这个。这个要根据它对它做一个解码,从里边取到它这个主体部分得到用户ID,这是第二个方法,再看第三个方法啊,跟这个一样,这个是从token中获取它的用户名称,因为咱们有两参数,ID名称从里边都可以取到。
08:07
以上是咱们工具类中的三个方法,第一个方法生成token字符串,第二个方法从token中获取用户ID,第三个token中获取用户名称。这个之后咱们写个测试方法来做个测试,试一下这个效果啊,那我们来试一下,这是第一个。J wt help啊里面这个方法to,咱就加上两个值,这是第一个,我们来个二啊,或者来个一啊,这个咱就为了测试了,咱就写个一,然后第二个加上一个用户的名称,我们就写这个Lucy。它最终生成一个token的。字符串这是第一部分,咱们把它一会做一个输出,这里我就输出一下啊开。然后第二个方法呢,我们从里边就是取到它这个用户ID,包括它的用户名称,我们给他取一下啊ID和名称。
09:10
点上盖头。U菜地传入偷开。得到的是用户ID,包括同样啊,咱从里边把它的用户名称给他也是取到,咱就做一个测试,一会在具体功能中给他来用一下就可以了。这个得到名称,最终把这两值,我们也是做一个输出一个用户ID。另外一个用户名称,所以现在这个测试方法就完成了,那咱们执行看一下效果怎么样。我们来啊,看一下啊。然后大家看啊,呃,这里边报了一个错啊,咱看什么问题啊,报了一个错啊,他说这个死神U没有啊,那我们给他改一下啊,应该是少了某个依赖的问题啊,给他快速改一下啊,就这个。
10:04
U。那我们怎么来改呢?因为这里边只做一个测试,所以咱们来到我们这个模块中啊,Common里边我们找到在里边呢,其实它是到这个spring里边这个那种啊,咱把这范围给它先改一下,为了咱们做测试。啊,先给它注掉啊,就这里边表示你这个作用的范围,这个我应该明确啊,如果这个不知道,那你把may问就会,之后再来学我们的课程,这我就不具体说了,因为这是may中的知识啊,然后之后呢,把它刷新,咱们再做测试,这里边我们只是为了做一个测试,现在我再做一个执行,然后大家看这个效果啊,生成token,从token里边取到它的值,各位看到是不是取到了,第一个就是生成的token字符串,第二个从里边取到的ID和名称。然后大家看字符串里边啊,你注意看这位置是不是一个点。
11:00
再往后边看。这位置是不是还有一个点,因为它有三部分,他把这一部分中进行编码加密处理,然后用点进行隔开,所以现在啊,我们就完成了GT这个整合,这个明就你知道什么是GT,它有哪些组成部分,然后把它整合到我们项目中去,这个我们就完成,完成之后呢,下面呢,咱就开始写下我们这个登录的接口,因为接口中要用到这个FT,所以咱先把它完成整合,那下面呢,我们在里边来继体写一下这个接口。那咱们找到啊,在我们这个service OA里边有一个index control了,咱们找到登录的接口之前登录咱们是返回固定的值,目前把这个需要做一个修改,因为目前咱返回的就不是这些东西了,那咱们看这该怎么去做啊,下面我来写一下这一段,我先注掉。
12:00
咱们写到下边啊,首先第一部分登录的时候呢,咱们是不是有用户的名称和密码,所以咱们需要得到你的用户名和密码,这是我们的第一步。我写到这里啊呃,这个代码我就保留了,因为在这是咱们之前写的,咱就不给他删掉,保留咱往下来做第一步操作。获取输入的用户名和密码。这是第一步,然后获取之后第二步操作,根据用户名,我们去查询数据库啊,看里边是否存在这个数据,就是第三步啊,我们看这个用户信息。是否?存在。包括咱分析过了,如果它存在,咱判断它的就是密码等等这些值啊,就是判断一下它的密码。然后判断之后我们再来判断用户是否被禁用,这些都做判断,然后这些如果都可以的话,我们最后一步第六步使用GT,根据用户ID和用户名生成一个token的字符串,然后把它最终进行返回。
我来说两句