00:00
登录的问题解决了,我们接下来要解决那个登录之后的权限问题了,就是意味着当你登录之后,来我们写上登录之后点击它,然后呢,我们这里啊,没有用户的权限,但是如果你知道地址的话,来index你照样能够过去,这是不对的,所以我们接下来呢,增加一个新的拦截器来解决咱们这个问题啊,否则我们会出现错误的,所以把服务器给它停了,嗯,停了以后把这个该关的给它关掉,然后呢,接下来我们在这里点击new,创建一个类叫ath,叫我们的。Intercept啊,同样我们这里呢,还是来实现接口,但是其实呀,咱们之前已经实现过接口了,我们换一个咱们这里呢,叫handler interceptor adapter,诶一个适配器,我们点击完成。
01:06
那么这个呢,我们可以重写它的方法来。重写它的一个叫handle,就是我们处理之前该怎么怎么做啊好了,那我这个该怎么做呢?首先我得知道你当前的请求路径是什么,然后这个请求路径我们需不需要验证它的权限,如果需要,我要看看你的用户有没有这个权限,有你就通过,没有你就什么去一些错误页面就可以了啊,所以我们这里呢,把它写上,把这个逻辑啊,咱们写清楚啊,首先第一个叫获取当前用户的请求地址。获取用户的请求地址,先把那个请求路径啊,先取过来,取过来以后判断当前的路径啊,当前的路径它是否需要进行我们的权限验证,这什么意思呢?这是因为啊,我们有些路径是不需要做权限验证的,为什么比方说帮助。
02:13
你帮助啊,你随便访问呢,你不需要权限,你想怎么访问就怎么访问,所以这样的路径啊,他不需要验证,但有些你必须要验证,为什么呢?我不授权,你是没有这个权利访问的,所以啊,我需要判断一下哪些路径是需要权限,哪些路径不需要权限。其实咱们反过来想想同学们,我们这里的这个表是啥意思?是不是叫permission表,它是不是我们的许可表,也称之为叫权限表,那么也就意味着它里面的所有路径是不是应该都需要验证,那不在里面的,那不在权限里面的表,那我们路径是不是就不需要验证啊?诶,就是这样啊,所以我们简单的就可以这么来做了,什么意思?
03:03
我们这里呀,来,我们写上叫查询,查询什么呢?所有需要验证的路径集合,就是哪些路径我们需要验证,我要判断出来,然后我再判断你当前的这个路径需不需要,所以啊,咱们来做这么一个操作啊,首先第一个获取用户的请求路径,来吧,我们叫UR,它等于request.request u r,嗯,好了,写完以后,那我们的权限路径都在那个promis里面啊,所以我们这么写,叫list,叫promis,嗯,叫permiss,等于那我得加个service了,所以啊,在这里我们写上叫promiss啊,咱们叫per promis service promis啊写完之后我们,嗯,然后接下下来把它。
04:04
拿过来,嗯,Promis service啊好,我们点,我们叫做什么呢?咱们叫query查询所有,你查询所有之后,那我把所有的权限都给他拿到,我们写上个site,然后写上个string,我们叫。URL啊,叫u set等于new site,我这里为什么会用我们的set呢?因为我希望它不要重复,因为有些路径可能是重复的啊。所以我们这么写完以后来for循环,然后我们写上promis promis promis,好了,写完之后啊,那我现在就得判断一下了,因为有些路径它是没有的,为空的,所以我们来写上叫做string YouTube。点意思啊。
05:02
嗯,我看看啊,咱们这里有这个,嗯,使君艇吗?就是我判断呀,它是不是为空啊,这样吧,我们写上叫promise.get URL,如果它等于空字符串,或者等于那吧,啊,如果咱们写上等于,那或者呢,它是空字符串,咱们叫equals,咱们叫promition.get URL,你可能啊是个那或者呢,你可能是个空字符串,那在我看来你都是空,那你都是空的话,我们什么都不做了,那假设你不是那并且不是我们的空制符串呢?那这个时候你就是我的授权路径了,所以我的UI set点我们增加,把这个promiss.get URL给它放进去。那放进去以后,我们这里面就包含了所有的权限路径,那我得判断一下了,来if。
06:01
If以后那我就写上了啊,如果you点它包含。如果它包含了我当前的uri说明什么问题,说明你当前是需要做权限验证的呀,所以我写上叫权限验证啊,但是如果不包含呢,说明你这个不需要权限谁都能用,那我就直接我们的继续访问就可以了啊。好,那接下来既然你要做权限验证的话,那我就得判断你有没有权限了,所以写上叫判断当前的用户,他是否拥有对应的权限啊,拥有对应的权限。对应的权限,那我怎么知道你有没有这个权限呢?诶,在咱们之前做登录的时候,我这边不已经把我们对应的权限取到了吗?所以我看看里面的路径,如果不为空的话,给它保存起来不就行了吗?所以啊,我写个site,然后呢,写上一个string,我们叫you site,等于new pay site啊,我就看看哪些路径是我已经分配了权限的了啊。
07:25
好,写完以后,那我就在这个把每一个我就判断一下来,我写上,嗯,promis.get URL,如果不等于,那并且permission.get ul它嗯,不是空字符串啊,不是空字符串equals。好了,然后把这个我们放到这里就可以了啊,放完了以后,既然你不是那么you arei side点我们给它增加,那我把当前的promis.get ul给它放进去就行了,你不是不是,那就是需要我们当前已经授权的了呗,所以把这个拿到,拿到以后,那我这里啊,就应该想办法给它取到,所以呢,我还要把它保存一下session.set atri,我们叫A。
08:25
这就是授权的那个路径啊,诶好,然后把它拿过来。你把它拿过来以后,这个保存好了,那我现在得想办法把它取过来了,所以我现在要想办法给它取过来啊,好,然后我这里写上叫做site,叫做three啊,我们就叫athur site等于然后我们的street就可以了啊,然后改成我们的,嗯,好了,哦,这个还没有呢,没关系,这个session我改一改,叫request get,我们的session,嗯,好。
09:07
写完之后,那我就得判断了,叫if,如果A点它包含了你当前的U,那么这个时候啊,这个时候说明你已经授权了,我们直接给他就可以了,然后呢,我们else else以后我们这里呢,应该return false啊,并且啊你return to是继续访问,那你force呢,说明有问题,那有问题的话我应该重定向了,所以response.senddirect。啊,这里我们应该去到那个AR啊,去到一个错误页面,但这个跳转呢,跟我们之前那个log e就很像了,我们这也得把这个pass给它拿过来啊,拿过来然后呢,我们在这边给它放过来啊,然后呢,这个是session,咱们叫request,我们的session,嗯。
10:07
好了,写完之后,那我这就写上了,咱们叫pass,再加上它就可以了啊。好,那我们现在这么写是不是就对了呢?我们来验证一下啊,看看我们这对不对,正好呢,我们需要把那个AR也准备好啊,就是那个错误页面,所以我们来拷贝,拷贝以后来我们给它放过来啊,放过来。好,我们改一改叫嗯。好,我们写上叫AR,然后呢,这里我们也写上叫A,嗯。行了,接下来我们在这个页面当中准备一下,点击new,创建一个错误的页面,咱们叫a.JSP写完以后添括号,百分号,配配including啊including它等于UTF杠八,嗯,好,写完以后呢,我们叫非法的路径访问啊访问。
11:11
啊。就行了啊,就告诉你是个非法的路径访问就可以了,就跳转到这个错误一面完事了啊行,那我们现在呢,我们试一试啊,看一看我们当前这个操作有没有什么问题,好把服务器给它重新启动一下,观察一下。好啦,那我现在启动完了以后,那我现在试一试,重新启动以后,那我得先登录啊。或者说不用登录也行,刷新诶,他回到了登录页面,然后张三张三,然后点击登录点,点完之后跳转到主页面,可是我们说了我没有这个权限,但是我知道它的路径叫build index,我回车,那么这个时候它能不能访问呢?如果他不能访问的话,应该去到错误页面,所以回车。
12:14
回车以后大家看怎么了,他还能够过去,那这是因为什么呢?那这难道发生了什么问题吗?它怎么没有跳到这里面来呢?这里首先啊,我们把这个写完了以后,我们并没有在我们的配置文件里面加上,那所以它不起作用,那好我们加上,咱们再看一看啊,刚才没有加,所以你写了是白写的啊,然后这里我们写上叫ath。好了,然后呢,我们再来试一试啊,来再来给他启动。那我这么写是不是就可以了呢,来启动。
13:03
好了,启动完了以后,跟刚才一样刷新,诶我得回去登录去,然后呢,张三,然后张三我点击登录点,点完以后找到我们这边没有,那好了,我再来写index回车,你会发现它照样过去了,诶那我们这儿加上拦截器了,怎么依然它不起作用呢?难道我们的这个环节当中出现了什么问题吗?我们一块儿来看一看,所以啊,我现在加上一个断点,因为它没报错嘛,那所以我们得加个断点,看看到底逻辑上发生了什么问题。所以我们重新启动,这个时候我们要用debug的方式启动了啊,把咱们程序看一看,哪个环节出现了问题。嗯,不对啊,这个起起错了啊,应该是我们下面这个启动啊,来骑一下。
14:13
好了,起完了,那我现在呢,刷新诶回到登录页面,这是对的,然后呢,我们张三,我们张三,然后点击登录,这个也没有任何的问题,现在我们说了,我们需要的是我写上一个index,好我回车,那这个时候啊,我回车的时候,我需要在这个位置加一个断点了,所以我们点击啊,我们这儿回车,回车以后诶。大家可以看到我们现在这个地方,我看看啊,咱们这儿好像是没有进来呀,嗯,咱们的看看auth,然后呢,我们的拦截器。嗯,加个断点呢,我们来看一看啊,这个地方到底发生了什么事,他为什么呢就过不来啊好,我写上index回车。
15:09
啊,这个地方来,我写上张三,然后点击登录点。点完以后,那我们现在看一看啊,现在好,这是我们的它通过。啊,咱们先通过啊,通过以后,然后呢,这里我们写上叫做index啊,然后我再加上这个它,嗯,然后呢,我回车。回车以后大家可以看到过来了,过来了以后我来看一看URUR呢,你会发现,诶,大家可以看到它是这个地方叫u page query啊,咱们这里呢,叫page query,其实就是分页查询呢,嗯。这个不管它通过,通过以后咱们来看一看。大家可以看到我们这儿呢,他可以正常的访问啊,那这个就说明啊,我们当前的这个访问当中啊,还是有点问题的啊,因为我们现在呢,我需要看一看它当前的权限都是什么,首先我们现在从后台当中取得的这些数据啊,都是这个样子的,但是其实我们得到的uri呢是带他的,那这样的话就有点儿麻烦了,所以我们该怎么办呢?我们这样。
16:23
嗯,我们在登录的时候吧,我把每一个这个路径啊,给它加点东西其实就可以了啊来,嗯,我想想session啊,咱们叫点get contest,来咱们把这个加上啊来你加上的话,那这个时候就满足了我们的条件,我们再来试一试,嗯。好,那我现在重新来啊,把它停掉重新来,嗯,因为刚才啊,发现我们路径中啊,缺了一个我们的web应用的名称啊,给它加上。
17:03
加上之后,然后呢,我们刷新啊,刷新之后来张三张三,然后点击登录,点完以后如果没有问题,点击我们的这个叫index回车,回车之后我们来看到这个地方啊u index,那它跳过来了啊跳过来的话,我想想咱们这个地方是不是还是有点问题呢?我们再来看一个啊,嗯,把这块他们再稍微的改一改,把别的都给它去掉。好,把这个呢,我们重新来启动。停掉。停掉以后给他来啊。点啊启动。启动以后,我们加上它看一看我们到底发生了什么事情啊,我们的这个判断对不对,嗯。啊,我想想哦,咱们这儿是不是也不对呀,哦,咱们这也不对啊,这儿它也不对,确实是啊,咱们这个地方增加的路径当中啊,也没有写那个pass啊,你没有写的话,那首先我们这儿也是有问题的啊好重新再来,然后呢把它debug,嗯。
18:20
然后先去掉啊,看看我们这对不对不对,咱们再来调试吧,我们这儿要加,我们这边也要加,两个地方都要加啊。好,启动完成以后,我们来刷新啊,重新来张三,然后张三点击登录,点完之后我们现在在上面写上u index回车,回车以后大家可以看到非法的径访问,为什么?因为首先我判断出来了,你发送的请求径,它是需要做权限验证的,然后我就判断你到底有没有权限,如果你有,如果你没有的话,并且我要去到AR页面,那我现在去的就是页面,那如果你在这边写上咱们叫做index,或者写上我们写的肉也行啊,Index回车,回车以后你会发现这个就能够正确访问,因为这个权限我们是有的,所以啊,我现在就通过这种拦截器把咱们的路径做了权限上的控制。
我来说两句