00:01
好呃,下边我们看一下这个内存版,就是数据库版,肯定这得连数据库啊,这肯定需要去连数据库,连数据库呢,那咱们就得加入一些个连数据库的这些个依赖。呃,数据源MYSQ驱动RM。这个咱们为了省事就不整这个买了。哎,把这几个依赖呢加进来哈。嗯,把服务器这边。先停一下。呃,然后呢,Spring里边配数据源。然后这个是我们配一个JD bc template。这个应该是我们讲什么是事物的时候,用过一下这个g d time。哎,Spring封装的一个简易的操作数据库的东西。
01:06
把这个拿进来以后啊。这个数据库叫security。嗯,我们看看,咱们去见你拿这个语去见一下库哈,我们这边看看有没有这个库。就就就是同学分享时说那个看管什么内裤是咋回事。里边存放各种秘籍是吧?你们知道内裤用日本话怎么说吗?啊。知道人挺多。我玩的一个玩过一个游戏,叫玩游戏叫什么崩坏三。里边就是说你要升级那个武器,收集各种的内裤,收集内裤升级那个武器。
02:02
挺好玩,那个游戏特别的特别的血腥,特别的残暴,特别的。啊,你们你们可以玩一下啊,嗯。我这个裤,我看我这好像有哈。Security。S开头的。我这儿已经建建出来了啊。嗯。然后这个库吧,我想想啊,就他会他会去。嗯。建这个表哈,我们需要去建这个表。建这个表之前,我们先说一下这个哪来的哈。就是我们需要在web,就是我们这个配置类里边哈,去注入这个数据源。咱们按顺序一步一步做哈。在这里边儿呢,咱们把数据源装备进来,因为一会儿要用。Data source。
03:12
嗯,然后呢,我们说啊,我们现在想进行相关的操作吧。先准备一个东西,叫jdbc token repository。这个JDBC就是连数据库的意思,Token就是令牌的意思啊,然后就因为他要把这个我们记住我相关信息呢,就是这个令牌存到数据库里边。这个reporter仓库的意思啊,表示现在我们用的是数据库作为仓库。把数据源装配进来,哎,然后呢,这边poken report把它给传进来。嗯,在这个下边哈。Token repository。这个to report这个对象呢,我们去给它建出来哈。
04:00
Jdbc tokenpoitory。Port。这个token reportity呢,Set一个data source。给他装配一下数据员。就有这个按说呢,这个类哈,看一下这个类的里边。它里边有建表的语句,这不是create table circle。啊,然后呢,这是键盘的语句哈,它这里边儿有。那按说呢,他都准备,他都把建表语句都准备好了,按说他应该能够自动去自动去建表。而且呢,这确实是有一个方法叫伊尼do,只要这个变量是真的。是吧?布尔值嘛,只要它是真的,它就会get gdpc template execute create table circle,执行这个语句去见表。这一切看起来都非常美好,不需要我们去见表。但是呢?
05:02
他很恶趣味地在这设置成了一个protected。他把这个方法给整的受保护了。为什么说他恶虚位呢?大家想想,Protected这个权限修饰符是有什么要求?咱们回忆一下咱们这四种哈,从小从小到大的是private。然后是default,就是你啥都没写,就是default,然后protected。然后public是吧,然后private private呢是本类可以访问。他们都可以default呢,是同胞。或者本类是吧,哎,这三个也都可以啊,Protected呢是这个。本类同胞或者是子类。Public就只能是同一个工程。哎,同一个工程,嗯,就是它这个。
06:02
就是他。呃。没,没错呀。就是。就他是他public是本类可以访问,同胞可以访问,子类可以访问。不同类,不同包,不是子类,只要他在同一个工程里边都可以,都可以访问,都可以访问,没错没错没错啊。没错。不是你看这儿嘛,看这嘛。就看这嘛,就是这个范围越来越大嘛,这个是最大的嘛,这个是最小的嘛。这个它本类可以访问,这个也是本类可以访问,这些本类可以访问,这些本类可以访问,它呢,本类的基础上,同胞可以访问,他同胞也可以访问,他同胞也可以访问。他呢?
07:01
子类不能访问了,它的子类可以访问这个,子类可以访问这个不同类不同包不同子类也可以访问吗?没错没错啊。没错。我们现在说这个哈。我们现在说这个,他现在把这个方法给弄的成了社保的了。社保的,你想我们跟他是同一个类,这个不可能了。我们已经没办法跟他同一个类了,我们也没办法跟他是同一个包。只剩下最后一个。你只能是。你只能是把这个类给他继承一下啊。继承的话,反正你另外新建一个类去继承他去干这个事儿。到一到好像应该估计是可以,就为什么说它是很恶趣味呢,它给设置为protected以后呢。你必须得当他儿子,你才能用。对吧,你这方法你不是他的子类,你就用不了。啊,这是人家说了我传儿不传女啊,啊,你必须你认个干爹,我就让你用啊。
08:05
这个让我们很无奈啊,我就不让你得逞啊,我我不不指望你自动建表了,我把这个搜狗语气复制出来,我自己建啊,我自己去建表。这你改的话呢,你这个东西这个你直接改是改不了的。直接改,改不了的,你直接你要改的话呢,就得改源码。你们会会知道怎么改源码吗?嗯,你建一个一样的包。建一个一样的包。建一个同样的名字的泪。然后把他的代码全粘过去。Ctrl a ctrl c。Ctrl a ctrl v。然后我们现在这个我们这个工程里边,我们有咱们自己写的这个类和它价包里边有权类名完全相同的这样两个类,它这个类加载的时候呢,咱们不是有类加载器吗?有类加载会有类加载这个机制哈,它这个详细说很复杂,那么简单说就是说我们这个离得近。
09:12
那么它会优先加载我们这个,所以说我们在这个基础上,我们这里边再去改这个东西就能改了。但是我不确定这个,我没有这么试过哈,我只是给大家说提一下说这个东西。试一下。试一下可以试一下啊,刚才这个我把这个表删掉哈。哪个是哎。更多表操作哈。嗯,诶。诶。啊,在这哈,啊对。我们把这个表删掉哈,就他要建的就是这个,就是这个表名叫persistent logins啊看看这个。
10:00
呃,得设置一下这个createup呢,CTRL看看。嗯,来一个set这玩意儿。得给它设置一下,设置成true哈,它默认是false吗。这成员变量的默认值,这个大家还记得吗?Int类型就是整数类型都是默认值都是零,布尔类型就是false对吧,然后这个是。什么这个double float是0.0是多少哈,哎,所以说我们这个得给他设置一下。那就是我们这边尿完了以后呢,咱们去给他。呃,Token reporter哈,点这个点点点点这个set一个。这个设置为处哈。然后我们得看一下啊,这个init方法好像没有,它是自动调的,还是得我们去调一下。这是是这是自动调的还是这个我们得确认一下啊。
11:00
这只能是在这儿打个断点。在这打个断点,咱们debug启动一下,看看他从不从这走。他要从这走了,就不需要我们外边再掉一下了啊,它就它就会自动去这样去去执行啊,他要是他要是这个。呃,不自动调的,还得我们自己手动去调一下。这是我们之前打的断点。哎,没有。他没从这走。过来呢,F刷新没有这个表是吧。那就得我们自己去调了。那我们自己调的话,那就是还是找这个token repository.in丢啊。嗯。呃,保存了,然后等这个服务器重新加载一下。就这已经明确去调了,这个时候他肯定得从这走,除非我们这个重写源码这个事儿,这个没没起作用哈。
12:08
哎,过来了是吧。这个就是它是处啊,然后就就往下走呗,这就get gd bc template去执行这个词语句。哎,然后也,哎,看你没有跑一场过来这边。F刷新一下啊,就是。就他把这表给建出来,所以说呢,就是说这个。嗯,要么你就要么你就按他的这个,你去找个类继承他一下。啊,要么就是我们这是改源码,要不就是我们拿这个SQL语句去搜Q语句去自己去去数据库去执行啊,就是这个你看嗯,表面上没有录,但是其实呢,这个有很多路是吧?哎,行军打仗我们就是逢山开道,遇水搭桥啊。这数据库表建好了,建好以后呢,咱们。别的应该没有啥操作了哈。
13:01
它也启动了,咱们看看这回能能能能不能记住我。哎,点记录哈,点登录。要换。这是访问的。这咋回事?那个我们重新来一下啊,这个有之前的那个,他可能是有之前的那个那个那个cookie呢,可能会有些干扰。我们把那个把那个之前那个灰给他给他干掉。哎呀,我去这是百度的哈,这是百度的每个域名下边的这个不一样哈。看我们这个。嗯,这俩按说不影响啊。行,然后这边访问应该都还正常,现在是记住我了哈,Remember me了,然后呢,这边我们去,呃。
14:08
对,咱们就还是还是简单访问这个闷哈。CTRLX啊,然后。现在服务器没有关哈,我们就先试一下啊,先服务器不关,浏览器,浏览器重新访问一下。哎,没有不需要登录过来,这边呢,刷新一下。这里边会有数据给存进来,这不需要我们去存,这是什么security它去存的啊,然后这样的话呢,我们把服务器重启一下。改源码这事儿呢?R。对哈,你说这个他执行到这儿。执行到这儿,他发现这个表是存在的,我去他已经抛异常了。
15:03
这个表是已经存在的。啊,这个他建表的时候说这个表已经存在了,它就抛异常了,这应该这样的,这个时候我们就这就你就得一不做二不修懒。不是删了,就是说这个。If not exists,如果不存在的话才建表。啊,存在的话就不见了,得这么样才行。啊,这数据还在哈。对你你说的话我确实是,嗯,他建表发现这表存在的话,他就会跑异常,我们改源码这事哈,你还是慎重。为什么这么说呢?就是这个你源码你改了以后呢,肯定这个已经不是框架本身的那个默认的那个操作了,那么可能你今天改了,你过了过了好几个,过了一个星期吧,不用不用太长时间,你可能自己就忘了。
16:00
你把这个原版这改过的事儿,你就忘了后续呢。你在这个基础上,你后续后续做一些别的操作,你如果遇到一些问题,你发现怎么着都不对,你上网各种查查资料,你就都觉得跟别人不一样。这里边儿就有可能是因为你把这源码改了所导致的连锁反应。啊,所以说这个东西,你咱们说这个解决一些问题,要是能不改源码是咱们是尽可能尽量不要改。啊,如果要改的话,你看你在一个非常醒目的地方,在什么地方,你把这事记录下来,不光让你自己记住,让你团队里边的别的小伙伴也知道啊,咱们这个项目啊,说这个地方咱们没有按框架原本的行为去做,咱们在这儿是把框架的代码是改了。啊,最好这个事儿是这个咱们项目经理啊是吧,是这个老员工啊,是这个位高权重的人啊,他去决定咱们要是改源码还是想别的办法,如果要改源码的话,这儿改完了以后确定没问题,召集大家一起来咱们开个会,跟大伙儿要说一下这个地方咱们改了跟这个地方相关的以后,咱们说再遇到有有问题或者开发什么别的功能得注意啊,我们这儿和框架原本的不一样,这是我们自己定制的。
17:07
啊,所以这个地方要注意啊。好嘞,呃,现在咱们看一下啊,咱们服务器重启了。呃,看这个cookie是是还在的啊,Cookie还在。这刷新一下啊。还在,然后呢,我们把这个浏览器关掉,重新开一下。哎,还是可以啊,这就说这个他数据库里边他记住了啊,数据库里边记住了,我这边点一下退出。看看这个。哎,你看他会把数据库里边也会给删掉啊。哎,同时呢,咱们这边看看这个cookie呢。哎,Cookie他也删掉了啊,就是这个退出,他退出的也挺彻底。
我来说两句