00:00
这个完事以后呢,下边我们看一下这哈。在这个地方呢,还是。没显示这个用户的昵称啊,我们看一下这个页面上怎么去显示这个用户的昵称呢。啊,然后我们。来我们看一下啊,这个页面哈,先找到页面,页面在什么地方进行控制的。在我们抽取出来的naive这个里边,哎,在这以前我们是写的是他。那现在这个这是我们自己做登录的时候是用的是这个,现在我们用的这个就肯定是不管用了啊。嗯。肯定我们在这个文件里边要修改一下。CTRLC。
01:01
目标六。哎,六六就是,嗯。这个怎么描述啊,就是说在页面上显示。呃,用户的昵称。去找到这个文件哈,这个时候呢,就不是这个不是说直接用个100达式就行了啊,这时候我们得去导一下spring security的一个标签库。这个叫这个哈,Security,然后。然后呢,它的前缀叫。导一下这个标签库。嗯。在页面上啊,先导一下标签库。
02:07
哎,然后呢,通过我们的标签啊,去获取呃,已登录用户的信息。这怎么怎么玩呢?啊,这个得先告诉大家呢,我们这边把咱们用的。咱们用的这个标签呢,叫这个标签啊。Security。Authentication。然后呢,在这个property里边呢,呃,写相关的表达式。那一说表达式这事就其实就很很烦人,因为你要是有一个对象的话啊,假如说你要是有一个对象,假如说这个你security securitydin哈等等。我看里边有啥属性,我去调盖方法就行了,现在这时候我凭空的,我也不知道这里边儿该写啥。
03:04
我们我试试能不能瞎写一个。我随便瞎写一个啊,瞎写一个,我比如说我写一个,呃,钉钉。这叫投石问路啊,我看看他会怎么样啊?这个没有改别的,就只是改页面啊,所以说我们就刷新一下。这样吧,咱们去后台的主页面哈,To配置。什么服务器停了好吧。服务器停了。把这茬忘了,我以为还开着呢。
04:00
过来看啊,诶邦机超一场了。其实我们应该早应该料到有这个结果,对吧?啊,你在这儿瞎写一个东西那。他泡一场也是这个情理之中的。但是这个异常呢,先不要忙着接过去啊,这个异常其实也能够给我们看到一些信息,说起这个异常哈,咱们插一句哈,就是这个里边。呃,大家已经到这个程度哈,你得慢慢的,你看你在eclipse里边要debug要会。页面上GS debug呢,你要要能会就更好,再然后一个就是说你得会看这个异常的信息。啊,异常的这个信息呢,最关键的哈,就是说这个往往在我们框架里边开发的时候,一抛一场,一般不是单个的一个异常。它是一串。它会有一串。这一串,它们之间是啥关系呢?诶。
05:01
他们下边这个是上边这个异常的原因啊,下边它是这个异常的原因。哎,所以说你真正产生问题是因为这个地方抛异常,引起了这个异常,它又引起了这个异常,最外边抛的是它啊,你首先看到的也是最外边这个,但是一般的一般这个东西参考的价值不大。大家一定要往下去拽哈,一定要去看,先看最后一个考子摆。最后一个原因,一般是根本原因。呃,99%的情况,你看这个就知道是出什么问题了啊,还剩1%的情况是什么呢?你的X毛写错了。最后一个根本原因,这儿呢,是告诉你X毛的第几行第几个字符啊,是怎么个错法。然后呢,你再往前翻一翻,你去找到具体是哪个配置文件,是哪个X毛出问题了,然后呢,定位到它指向的那一行,你去看啊,这就是你就知道了啊,是这地方,这地方写错了。
06:03
找到地方以后,基本上我觉得大家你都会改啊,这你都会改。所以说一定要把这个事儿一定异常信息要会看啊,一定要会看,你不要一看好家伙这个一整好几大片是吧,密密麻麻的是吧,一看到这个,我这个都想死的心都有了是吧。啊,他不是来,他不是来吓唬你的啊,他是来帮助你的。好嘞。嗯。其实呢,以后吧,你会发现哈,要是有异常的话,这事儿还反而还好办了。有异常就会有非常明显的线索啊,这有很充足的线索帮助你解决这个问题,然后出就是说最怕的就是说呢,没有任何的异常。也不报错,但是这个程序你运行出来以后,你知道它就是不对啊,你知道它就是不对。啊,那这个才真正难办呢,以后因为这个异常的东西呢,都是因为你语法呀,这些方面你技术很熟练以后,你就很少会有语法的问题出来以后呢,你很快就能改过来,最难的哈,最难的需要你真正去分析,像破案破案一样分析的,你就是得去那个没有不报错的啊,最后这个功能运行出来以后不对的那种。
07:16
再往后呢,就是说这个功能也都是对的,就是特别慢。嗯,那你就是这个得去优化这个性能对吧?啊。有个笑话啊,有有个笑话就是说这个开发的团队里边哈,为了能够跟客户那边要钱,他在代码里边写了一个。里边比如说他先睡上十秒哈。然后呢,用户说这么我咋一到这儿就卡住,一到这儿就卡住。跟用户说你这个地方操作很复杂,你要你想优化一下嘛,要不你就凑合用吧,啊,他说不太好,这个领导看着不开心是吧,优化一下,优化一下这个。
08:00
嗯,这个咱们二期工程咱们去优化一下啊,你看这个咱们签个协议,我们这个地方要做的这个调整特别多,数据库是吧,我们这个代码程序这结构,我们有很大一部分得返工,我们得重新干是吧?哎,你来个先来上50万吧,来上50万以后呢,我给你在这儿给你改成这个。五秒你看这一下子这个这一下子这个这个你看这效果很明显。啊,那你那你说这个还能不能再优化呢?再来50万,再来50万,我们这个请一个专家过来,哎,请个专家,然后我们把这个地方让他这个跟别的功能让他基本上差不多啊。啊,但是这个这个这种这种事儿吧,咱们乐呵乐呵就行了哈,但是这个你这么干,这是违背违背良心的,对吧。啊,这是肯定你不能真的这么干对吧,这个这个太过分了哈。好吧,我们现在咱们看看咱们这一场啊。
09:00
Not readable property exception。不能读的属性的异常。哎,这个非法的属性钉钉of b class,哎,这个属性啊,对于我们。这个类来说呢,找不到。这不就看到我们想要的了?这不就看到我们想要的了,这事就说明什么呀,我们在这里边儿,你写的这个属性。其实就是访问这个类的属性。我们要是知道这个的话,这事不就好办了吗?这个类叫你看username。Password authentication token。用户名密码认证令牌是这么一个东西。哎,我们去那就拿有道有有有这个东西,咱们就拿上去看一下这个。看一下他这个代码吧,哎,过来以后看看啊,它有个属性叫principle。
10:01
有一个叫credentials。哎,有一个这是它的构造器。然后呢,这又是一个构造器。Get credentials get PIN set authenticated。Eraser credentials。呃,瑞,什么意思?咱们学英语,其实初中的时候咱们就学了一个单词叫eraser。Eraser是橡皮,橡皮擦。这是个名词形式,这是个动词。那翻译过来就是擦,呃,口语大白话就是擦,要书面语怎么说?擦除对吧,擦除擦除这个credentials,其实在这儿呢,它会把这个密码给抹掉。这里边儿哈,他走到这儿的话,他会去把这个密码给抹掉,这个get这个里边哈,你看。嗯。
11:02
Secret就是ers。呃,呦,又是个负类的,我去。这个转的,这到底是转到哪去了。这是个抽奖方法。具体是到哪儿干的这个事儿?啊,这不是password等于now吗?把not值付给password,就把密码擦除了。我已经登录进来了,其实我对我系统这边来说,不需要再看你的密码了,那我把它擦除了,你在别的地方你就看不到了。是吧,那你这时候就是这个,呃。你也就没办法就说就窃取这个密码啊,就让你这个在增加这个窃取密码的这个难度啊,他他这个地方是捎带着说一下,这有一个呃,叫凭证的擦除啊,这个credentials啊,Credential就是凭证。好嘞,那么其实我们发现啊,这就这么两个get方法,Get credentials,呃,Get,呃,P啊就有这么两个啊,那咱们就看看呗,啊既既然这有盖的方法了。
12:13
那么想必他这个规规则是一样的。访问一下credentials。啊。嗯。看看credentials。这样哈,就是这个,他这credentials呢是个object类型,Principle也是object类型。咱们看看具体的类型是什么,大家你如果我把这个对象给你,你有没有办法说说出来它是什么类型的呀?就是咱们有这对象了。这个有啥办法,你能知道他是啥啥类型的,具体是啥类型的。哎,对了,非常棒,这是哪部分的知识啊,这这一块叫哎反射,就是说这个一个对象呢。
13:02
调一个get class这个方法。得到的class对象,然后呢,这边不是说再去调这个,呃,Get name。得到的是权利名,哎,然后那么在我们要是表达式里边呢,就不要get,把剩下的首字母小写就是class.name。哎,就是调get class得这个name。哎,这再再咱们说说这个class哈,这个东西其实它对应的是是个什么呀,这个。它其实我们说一个,它有没有对应一个很具体的东西。你要是你要能够意识到它对应一个具体的东西吧,这个反射就好理解很多。他你看我们Java源程序呢,是什么,什么叫Java。编译以后叫叫class,其实这个大class呢,这个这个这个东西的对象吧,对应的就是这个class文件。
14:01
他其实取那些东西就是从这里边取出来的反射,它为啥能能反射出来呢。光学这个反射呢,你看这假如说这是一个镜面是吧。哎。我我上初中的时候学物理呢,我画了一个这个图,我画的一个图是是是这样的。完了那个完了那个,我我我后边有哥们,他抄我抄作业,他抄的是我的。他抄的时候,他心里就犯嘀咕。这个不应该这么画吧?这不应该这么画吧,但是呢,但是呢,这个我学习比他好,他就他寻思,那可能这个地方我可能没有人家学习好,是吧,那就按人家这话吧,是吧,结果被老师发现了。这,但是他的名字比我的名字好记,然后老师就然后老师就就就点名就就把他叫起来给数落了一顿是吧,然后老师说另外还有一个人也是这么画的啊,但是我想不起来叫什么名字了,然后我就躲过一些啊,所以说不要你得相信自己对吧,哎。
15:09
就反射呢,其实你看啊。这边是我们的这个它的Java的源程序。然后呢,这边过来的是我们就这个哈,这个像镜面一样,这就是那个什么什么点class文件。哎,然后呢,这边反射出来就能够得到各种信息,是因为呢,我们在框架呀等等这些地方得不到这个源程序啊,没办法像正常调调方法去得那些,就就通过这个反射这样去去得,哎,所以说我们现在就是。咱们这儿呢,访问一下它的class属性。哎,然后呢,点内哈,去看一下他的权利里面是啥。哎,再然后呢,就是过来这边还有个principle哈。
16:01
也是。咱们去这个,呃,访问一下PCI这个属性,访问class访问内啊,咱们去看看它的权利名是啥。嗯,我去这个位置。这个位置是咱们那个显示张三的,就是汤姆的那个位置啊,这好像这个显示这放不下哈。这个位置他放不下,放不下呢,咱们就。换个地方吧,咱们到这个闷页面哈,到到这儿呢,咱们来显示一下,这儿稍微宽敞一点。我这个人就喜欢宽敞。嗯。有啊。Credentials,这个也不行。这个也不让房子呀。这这个为啥不让盘呢?这不有盖的方法吗?不让访问,那先把它注视掉啊。
17:09
你看这个很奇怪哈。这个不让访问哈。Credentials,是我们写错了吗?这个从道理上来说,这不是也是public,也是get。好吧,这个先不管它啊,现在我们是拿到这个principle了。P打印出来以后,我们发现。这不熟人吗?啊,这不是熟人吗?是吧?这是我们刚写的密码。哦,原来就是他呀。那其实我们要能拿到这个,这是咱自己写的东西,那咱就心里就踏实多了。对吧,哎,那有他的话,这就这就这就我们心里就好受多了。啊,原来是。我们这儿咱们就把它这个显示到页面上啊,这个没关系。
18:04
嗯。显示出来。啊,才发现。这个P。嗯,原来是我们自己封装的security admi啊。原来是我们封装的这个对象啊。这个后边就好办了啊,当然这时候我们捎带说一句,说我们封装这security这个对象咋就跑这儿来了呢。啊,就是说这个security。他在给我们处理完这个登录以后,嗯。处理完登录操作之后。哎,处理完这个登录操作之后呢,呃,把。把我们那个。
19:02
呃,Load user by username那个方法的返回值啊,就是你登录成功以后啊,就是那个user对象。以这个。这个属性名去存入了,我们叫user password。Authentication token给存到这里边了。哎,存入了这个对象啊。这个principle大家还记不记得这个单词是啥意思?我们咱们刚开始介绍了三个三个概念,三个名词,一个是P,一个是authentication,一个是authorization。Authentic是认证的意思,Author authorization是授权的意思,这个principle是啥?哎,这个有同学还记得啊,这是主体。
20:00
啊,这是主体。这就是说我们说了认证成功以后。认证成功以后啊,这个你就是以这个主体的身份啊来操作这个系统,他确实是也也确实是有这么一个对象,这个PCI这个对象,它就是我们这个securitydin这个对象啊,就是这个主体啊,就是我们主体。有了这个以后呢,那么下边再去访问securityin这个对象里边的属性,这个我们就手到擒来了。哎。就是下边我们可以访问securityin对象的属性。哎。这个时候我们就是说用这种方式吧,让大家去感觉到哈说。嗯。这种你让大家去体验一种这个我们去探究,去研究一些个技术的一种方式啊,你多掌握这样的方式,你研究这个技术的能力越来越强,你的自学的能力越来越强啊,你学的技术越来越多,你就竞争力就越来越强,对吧。
21:09
这里边儿,比如说访问original admin,就能拿到这个原始的admin对象。就哈下边访问他。哎,这是访问,这是拿到原始的呃的命对象,再从这里边呢,再去访问。哎的mi里边的属性,那就随便你访问了,对吧,你是想要账号也行,密码也行,这个。这个叫用户名email是吧,这个你想访问就都可以了。Logging account user p swd。Username。Email。呃,这个咱们再跑一下看看。
22:05
然后是他。啊,这个汤姆是这个,你看这个密码吧。这密文这儿还有哈,说明这个,呃,刚才我们说那个凭证的擦除的那个服务呢,在这儿没有享受没有没享受着。对吧。嗯,这个就是跟他这个后边这个后期这个运行是有关系的。啊,这个咱们先看啊,这是它的这个。呃,这就是我们要打算在这显示的啊,这个叫用户的昵称,这是他的邮箱,我们现在这个说明呢,它应该是没有create time啊,就是没有。这这样的话,我们就知道这个时候这个值怎么显示了,嗯,所以说其实我们在这儿的话,咱们就是把这个拿过去就好了。CTRLC。用这个去代替我们以前这个幺表达式。
23:04
哎,这个我们说这有一个分析的过程哈。呃,就是这一串啊。
我来说两句