00:02
各位大家好,欢迎继续观看上硅谷视频课程,在刚才内容中呢,给大家讲到了基于spring security安全框架进行自动登录一个原理的分析,咱也通过查看源码看了一下它的基本的封装过程,那我们下面就通过框架把这个具体功能给它实现管理实现出来,咱们来做一个具体实现。就是咱的第二个具体的一个实现,那咱们看怎么来做。我这里边把里边的每一步给各位详细来写一下,首先里边的第一步呢,咱们在我们的数据库中呢,我们就先创建一个数据库表,但这个表呢,其实咱可以不用自己创建,可以让他帮我们生成,但是咱为了看的更明显,把这表我先做个创建,而建表语句刚才咱们看过源码,在源码里边其实有它那个建表语句,咱可以把它复制啊,里面就有,你刚才我们应该是见过他那个地表语句,就是里边的这个东西,它的表必须叫这个名字。
01:08
就是persistent log log,然后我这里边在笔中给大家也听出来了。咱就通过这个语句把这个表我们做一个创建,所以这是里边的第一部分建表,这个表呢,我提前已经创建过了,然后把里边数据先删掉啊,默认是没有的,就是这张表,然后你看表里边username,包括这个token啊,包括你这个具体的一个那种,就是时间嘛,这样的话表我们就完成创建。这是咱们的第一步,我们就快速做到。给各位分过来,然后创建表之后,下面我们再进入到里边的第二步操作,那第二步做什么呢?给各位强调,咱们就需要修改一下我们的配置类,在配置类中呢,来写上一些相应的内容,那给各位来写一下啊里边的第二步。
02:04
咱们就是在配置类中做件事情,做什么呢?我们可以注入下我们那个数据源,然后来配置一下我们操作数据库的那个对象,就是咱刚才提到的,因为咱要操作数据库嘛,它里边要用到的是这个对象,JD bc token re potterary m PL,咱把这个要给它创建在我们这里边,就是我们的项目中,包括把咱们的数据源给它注进去,因为咱们的数据源,咱的数据库。就是我们的这个把这个需要注入,所以在配置类中我们需要做这两件事情,那各位快速写下啊,咱找到配置类,或者说你也可以单独再建个配置类,我就在这里边,我们就直接写了,因为它都是配置类,你写到一起可以给他单独写也没问题,那现在写下啊。首先我们先注入这个。数据源先做一个注入。
03:04
然后注入,我们就用这个o to加上一个private,然后数据源叫这个date。Source这个叫这source把这个注入,然后注入之后咱把那个对象再做创建,就是我们操作数据库里边的一个对象,然后这个对象呢,我写下啊,咱就来一个艾特。B我后面加上这么一个叫public,但是对象呢,其实咱注入我们刚才看到的这个,就咱刚才看那个MPM位是可以的,但是咱最好注意它上层一个对象,就是里边一个叫。Persist token re reporty,那我这里边给他做一个注入。会来一个public,加上一个叫persist,我给他找一下啊,就是里边。Per应该是它上层的这个,也就这个把它注进来。
04:00
咱给他拿回来啊,我先把多余的先关掉啊,找到我们刚才那个P类这位置。把它用艾特并注入,包括里边就要做一些设置,然后在后面给这个方法我们起个名字,比如说就叫。这个名字。就是他。把这个啊,我们就做了这么一个。配置,然后配置之后呢,在里边咱就new它那个具体对象,并且把这个数据源给它叫set进去,最终在瑞吞我们这个对象,那咱给他写下啊,咱还继续找到刚才的这个。就是把这个JDBC这个给它扭出来,因为咱底层是用它去操作数据库的嘛,你需要给它扭出来,扭完之后设置里边那个数据源,就是咱们注入的数据源,因为我们要操作我们自己这个数据库,最终把它做返回,这样的话把这个就完成配置,而在这里边呢,其实有一个配置,它可以帮我们自动升这个表,但是我现在咱就直接给他自己升出来,那这配置是什么,给各位也写下啊。
05:12
里边有这么一个配置,看这个大家看啊,这个叫做create table on set up,就是在启用时候把表创建,所以咱们现在我是自己创建的,这句话我就不加了啊,这个就完成了,注入数据源,然后再配置地下。这是我们里边的第二步操作,这咱们就写出来了啊,我把这个给各位也是。复制过来。就是这段代码。这个啊就做到了啊,然后做到之后,下面咱们继续往下来弄啊。来看下面做什么,就是现在呢,大家看我这里边把数据库表创建了,然后完成了里边这个配置,那咱下面做的就是啊,在配置类里边要进行下一系列的配置,比如现在我要设置我这个相关这个就是自动登录里边一配置,把这个咱需要做到,那怎么做,咱往下来写下啊,那我们看到。
06:16
首先我先写,然后比再完善啊,咱们往下看,大家看这个方案中,你看啊,这里边咱之前是不是设置了很多东西,包括比如你登录,包括各种路径,然后现在我们在里边需要做一个进步设置,这个设置就是关于我们这个记住我或者自动登录过程,那设置什么我写一下啊,首先来一个。这个and。啊。这个方法。点上一个叫这个就是remember me,你看啊remember me是不是要记住我,然后在里边我们要设置里边就是你那个token的切换操作,就是一个叫token re pory,这个在里边把咱们那个对象给他就拿过来,因为咱的对象用的是不是里边的。
07:08
这个方法,所以你把这方法给它复制过来,你要用到这个对象,然后这个做完之后,咱们现在可以设置一下你这个当前的有效时长,比如我设置我这个自动登录60秒,这有效或者多长时间有效,这里边可以设置有一个方法,它叫这个我们写一下啊,是这个token validate seconds,这里边是一秒单位,假如我设置成60秒。然后最后这里边要用到就是你哪个那个查询数据库的user details,咱上面有那个就是user details service,这样的话,我们就完成了这么一个设置里边这个过程,然后把这注释给大家写详细点啊。首先记住我在里边我们用到就是咱们操作数据库那个对象,然后这个位置表示设置你的有效时长,它的单位是以秒为单位,比如现在60 60秒,最后设置你那个user detail,因为咱要用它底层去操作数据库。
08:14
这样的话,把这个我们就写出来了,我把它给各位写到笔中来,就是咱们的第三步。配置那种配置自动。登陆。这个代码给各位说过来。就是我们的这段啊,所以这样的话呢,咱们通过简单的底部配置就完成了,基于spring security实现自动登录过程,这个咱们就做到了,就这么一个写法啊,然后咱们再检查一遍,最终做个测试。它的做法就是在里边就是做一些配置,首先在配置类中注入数据源,然后加上你里边这个对象的配置,另外配置类中加上你自动登录的配置,这个就做到了啊,但是做到之后呢,咱缺少最后一点啊,因为一般来讲咱在页面中是不是有这么一个处理,所以页面中咱需要做个设置,也就是我们的。
09:15
最后一步啊,这里写到就是咱到第五步。我们在登录页面中添加一个。复选框完成最终的一个过程啊,那我们给他加上啊,咱们找到登录页面在里边呢,有这个用户名密码,然后下面我加个复选框。这个应该叫做check box。包括啊,这里边这个密码,但是我强调啊,你这里边要实验的一个叫自动登录,因为我们是基于这个screen security框架做到的,所以在里边呢,你在写登录页面的时候,它里边那个名字是一个固定的名字,比如它的名字,比如叫这个remember-me,你要叫别的名字,他找不到,他默认只找到这个名字中这个复选框是否进行选中。
10:17
这个各位特别注意啊,因为用到框架里边肯定是做了一系列封装,所以咱们把这个你写的时候要特别注意,它必须叫这个remember me。这样的话,咱们现在把这个我们就完成了啊。然后完成之后,最终咱们把效果我们来做个测试,看一下最终的结果是什么样的。这个我先接过来啊。这是难道第五步他必须叫这个名字?你叫别的名字,那他就找不到了啊。就这个remember me。好,这样的话啊,咱们把这过程应该就完成了啊,完成之后下面呢,我把这服务器我们重新启动,咱们看一下最终的效果是什么样,就看一下我们这过程能不能实现出自动登录效果,咱们等它先停起来。
11:15
好,现在服务器已经完成了这个启动,那咱们下面我们就做一个完整的测试,咱看一下结果啊,首先我来到这个浏览器中,咱们先访问这个登录页面。捞个in.HT还买了,我们先做一个访问,然后访问之后在里边我们做一个登录,我来一个Lucy。123。里边自动登录,为了明显我打开浏览器的F12。因为里边能看到一些信息,现在我登录是不是登进去了,然后各位看啊,在这里边呢,有一个值,咱们仔细看这个值。是不?Cookie名字叫remember me,这是它加密的一段串,然后后面有它的过期时间,因为我设置成60秒,目前就这么一个时间,所以这样的话,你看里边这cookie名字叫remember me,这个位给他知道啊。
12:14
现在我们在里边就有了这么一个东西,然后这个有之后下面的,比如说啊,我访问某一个这个CTR了啊,咱就访那个test。In desk,这controller肯定可以访问,包括里边是不是有这个cookie啊,就是你看啊,现在这个cookie应该是已经存到了我们这个当前的浏览器里边,咱可以看一下啊,在里边我们找到我这是谷歌其他浏览器都类似啊,在里边找一个叫网站设置cookie,你看里边查看所有cookie,咱当前应该是这个local house是不是一个remember meal里边有这些信息,所以现在这里边我们已经存了这个cookie,包括各位看啊,在咱目前的数据库里边是不是有这个字符串,就是刚存进去这字符串,这是给我们做了一个加密处理,然后它会跟这个做个比对,注意这些数据库里面的过程是由spring帮我们封装的,当你每次操作会往里边加数据。
13:18
那咱们下面进一步测试,比如现在我这么做啊。我把浏览器关掉,我已经关了,然后我重新打开浏览器,在浏览器中我再来输入这个路径,咱们回车大家看啊,里边这个位置啊,应该有点小问题啊,咱看一下什么问题啊,因为正常效果应该是里边的它这过程中。应该是可以正常登录,那我们看目前为什么有这个问题啊,我现在这么式啊,我先把里面一些多余东西先给它删掉,因为里边我有很多干扰的数据,先给它删一下啊,然后咱们再重新测试一下啊。我先把里边没用的先都给他删掉啊。
14:01
啊,我看一下,然后咱们重新测试啊,省的一些数据总是干扰我们啊,啊这些都删掉啊,然后咱们重新试一下啊,看一下我们最终结果,这过程肯定没有错啊,咱们最终试一下啊。好,这里边啊,我们先访问这个local host,它是8111,然后进入到我们的登录页面,在里边我们给它登录一下LUCY123,记住自动登录,点log in,现在登录了,然后咱们仿这个叫test的杠in desk,这是不是可以是没有错的,我现在把浏览器关掉,我再重新打开,打开之后到里边我再访问。大家看是没问题,刚才应该是之前有些数据给它干扰了,我给它清掉就没问题了啊,比如说有些缓存,所以你看现在我再打开浏览器再访问是不是还是认证,这样的话就实现出来我们这种自动认证或者说自动登录的效果,咱们把这过程就最终做一个实现,所以这个啊,就是咱们完成的基于spring security实现自动灯过程,大家要掌握它的实现原理,这张图要能看懂,咱们通过源码做个查看,包括里边咱们具体的配置过程,能给他把效果做到。
我来说两句