00:02
来,我们说上午这个这个问题啊,咱们重新跑一下。其实程序出问题的时候啊,这个正是特别有意思的时候。啊,浏览器这有哈。啊,这不是登录哈,这个其实哪个用户倒无所谓了哈。哎,这不过来这泡一场吗?剖场,我后来就琢磨这事儿怎么去分析,怎么解决呢?去看它抛异常这个地方啊,是战士异常的信息。下边这儿呢,是泡浴常的位置,那么我咱们就点过来啊,就是它具体泡异常这个地方。点过来发现是在这抛的这个异常throw,尿啊,这个exception。
01:03
然后呢,在这儿呢,发现它是在这么个方法里边叫get exception handler。Express啊,这个handle,然后呢。这个时候在这做了这么一个操作,叫做find required web application context。这不就又是找LC容器吗?哎,说了半天,其实还是找LC容器的时候出的问题。这有个断点啊,咱们定位到这儿呢,咱们debug看一下。Debug看一下,哎,在这儿他找LC容器。呃,需要在LC容器里边,后边呢,需要从这里边呢去取一些个东西,然后呢,我们关键是看它找到的是哪一个LC容器。哎,我们的spring security有关的东西都在springc的LC容器里边,他如果找到的是spring LC容器,那确实是那个要找都找不到。
02:00
哎,就是过来这边。To login。诶,过来切换一下。呃,往下走一行。这个APP context。哎,然后我们一看。这个还是root of context hierarchy,这就是那个spring的LC容器。哎,这里边儿没有我们spring spring security的那一套东西,这里边就没有。哎,这里边没有的话,那那就是再给他换一下呗,哎,让他去找我们么,MC的LC容器不就得了吗。哎哎。就是向人撒谎一样。你撒了一个谎呢,你就得再撒,另外再撒十个谎来圆你这个谎是吧?改源码改了一次以后呢,后边再有再有这个地方还得接着改。所以说呢。建一个包包。
03:04
有句话叫包治百病。哎,过来这边ctrl a ctrl c。Ctrl a ctrl a。改源码这事上瘾。CTRL。是哪个方法get expression?然后呢,这边就是这个地方啊,不让他找这个LC容器了。哎,让他去找spring的LC容器。那么找LC容器呢,其实我们跟以前这个对照的话,我们都有经验了。哎,先拿到context。拼一下,拼一下我们这个首选名,从这里边get attribute。就取到FC容器了,哎,所以说其实跟这个步骤是差不多的,所以说这个第一步呢,是先获取so。
04:06
Context对象。咋获取呢,就当前。这里边儿就有这个方法啊,直接get就能拿到。哎,第二个呢。呃,我们去拼接一下我们spring。MVC啊,他在。Context这个域中的属性名。啊,At t。嗯,前面呢,是这样的frame。A work so late。第二。哎,这个叫contexts。再加上我们的名字。Dis solve啊,加上这个名字。
05:00
Spring despite later。哎,把这个准备好,第三步呢,嗯,从我们。域中。获取LC容器这个对象。嗯,这就是so context.get attribute传进去attribute name,哎,这个呢,就是他要的这个东西。强转一下。行了。这不我们就拿到这个对象,他后边就用就好了啊,就要改的就是这么几个地方,把这改过来以后呢,我们再重新跑一下啊。看这个分享第一个标题,我以为要说的是那个。
06:02
阿姨,我不想努力了。嗯。这是个问题,来,先用汤姆先登录一下。这回就不抛异常了,不抛异常,然后你看原来四个球,现在只剩俩了。还记得吧,哎,这两个球呢。这两个球的这个要求是。哎,一个是要求经理的角色,一个是要求肉delete这个权限,哎,这俩呢,我们现在这个汤姆是都没有。然后呢,他退出一下,换成Thein operator。就显示三个,哎,然后呢。如果换成我们这个肉,Operator也是显示三个啊,这颜色不一样,诶,这就是我们这个。
07:04
呃,上午这个遗留的这个问题哈,然后我们去把它。呃,改过来这个标签库的这个使用啊,我们用的话这个倒是没什么问题。这个标签。哎,就是,呃,我们。这个标签的里边的部分啊,它里边就是我们要进行呃,进行权限控制的部分。哎,这个。开始和结束。标签之间啊,就是这个,嗯。要进行。权限控制的这个部分。哎,把这个。
08:03
呃,这个加上以后哈,然后这个下一步呢,就是。也就是说这个里边access属性。嗯。这个地方就可以去传入。权限控制相关的这个表达式。哎,这个表达式和我们以前写表达式,这个表达式是一样的啊,表达式是一样的。哎,这个权限控制,他如果说检测有没有当前登录的用户有没有权限,他要是有的话,这里边就可以显示,没有的话这里边儿就不显示啊嗯。哎,去检测当前用户啊。嗯,是否。可以访问。就是呃,是否有有权限。嗯,有权限就显示这里的内容啊,没有权限就不显示。
09:07
但是这里边儿呢,会有一个呃异常。这个异常呢,会提示我们说。找不到web expression。嗯,就是我们这儿看到他要找的这个东西。Expression hard。他最后呢,他说这个东西叫。Web啊,就是就是这个异常没有这个。没有这个实力被,没有这个实力能够被找到。这个异常的这个原因是什么呢?哎,就是因为我们这个类哈,当前这个类。抽象的权限的这个标签这个类啊,它默认呢是查找。
10:01
这个根。级别。的LC容器,哎,原因是这个。而我们。而我们跟级别的LC容器中。没有扫描spring security。的那个配置类啊,所以说就没有相关的病。哎,那么这个解决的这个办法。哎,我们去修改一下这个类的这个源码。哎。这回这回这个这个咱们班同学厉害了。啊,这个框架已经不是说单纯的使用的问题了,我们已经能够根据我们的需要对框架进行调整。啊,你,你更厉害了啊。
11:02
不在你面前都要瑟瑟发抖。呃。就spring都不够好了啊。他都有缺陷了。嗯。哎,这里边儿我们改的话就是这几个地方。嗯,这一部分啊,这是我们改了的。这个有个有个有个词叫二次开发啊。哎,别人写好的一个什么东西,在他的基础上重新去调整啊,或者开发新的功能啊等等,哎,这是二次开发。
我来说两句