00:00
啊,然后呢,大概我们这个地方,当然这个流程,由于它不是一个独立的业务流程,所以这个流程我就不换了,我就直接写这么一个拦截器就行了,好,那拦截器的话,这个地方我们来写一个拦截器,那这拦截器也是也是属于。系统管理的功能,系统管理功能我也写到了这个是吧,Settings这个这个包下边那拦截器也属于外部管理的功能,所以我怎么写到外部,那外部下我们以前写过控制器知那下边我们要写拦截器了,所以在这个什么在这对外部下边再创建一个包,这个包叫拦截器的一个包,以后所有的拦截器,关于系统管理的拦截器我都写到这里了。然后呢,我这个地方来写个包,对拦截器叫in特尔对S这样就写了,好这样的话,我们在这里边来写拦截器行了,那在这里边创建一个类,这个类我就类名,我就建名之意了,我就叫log in知道吗?Intercept是做登录验证的拦截器,这样吧。
01:02
然后呢,这个地方我们就可以了,这是一个肋。我们说这个类你不能随便写,你要随便写,将来请求拦截到之后,他不执行你随便写的方法,你只能按照他的方法写,那么将来拦截到请求之后,它会自动执行相应的方法知道,所以那他的哪些方法,他的哪些方法都在接口里边定义好了,那所以说他的有哪些方法,那我们要实现它的接口,然后把它接口里边定义哪些方法都实现了就行了。好这样,那它的哪一个接口,就这个,对叫handle德特就就这个这个接口,那我说这一个接口,那看这个接口里边定义了三个方法,我们在拦截系数把这三个方法实现了就行了,然后实验方按out insert,然后呢,Implement拿这三个方,朋友这三个方。好,这是我们说的,这那这三个就是咱们刚才说的请求到达目标资源之之前执行请求,知道吧,直行完目标资源之后执行,然后呢,响应回去之后最后执行知道吗。
02:06
好,这是我们说的,这那下边我们把我们的登录验证的代码写在相应的方法里边就行了,知道吧,那我们要做登录验证,再看那我们写哪一个方法,把我们的登录验证代码写到哪个,写到哪个方法里边哪一个第一个还是第二个,对第一个到达目标资源之前执行知你都到达目标资源之后,人家都执行了,你在拦截就没意义了,所以大概我说这个地方在这里边执行。所以把我登录验证代码在这边,在这边执行了,这这么写到这里边就行了,那写到这里边,这里边一个这个方法它的含义就这大卡,如我说这个方法在中,只要符合拦截规则,请求到达目标资源之前自动执行这个方法,那这个方法它有个反问值,布尔类型的,布尔类型的反问值那吧,返回出入或者false,它这个主要有含义是吧?返回出的时候表示什么意思,对不拦截放行是吧?放行等于false的时候表示拦截,知道不让它继续访问的么?目标资源知吧,好,这是我们说的,这好下面大家看,我们就把我们代码写到这里边就行了,那我们代码干什么,在这里边,那我们这个地方就要什么做登录验证了,做登录验证了,那如何做登录验证,我怎么着说,用户每次访问目标资源的时候,只要符合篮球规则,都会到达目标资源之前都会执行这个投。
03:33
在这里边我要判断了,判断什么,判断这个用户在访问这个目标资源之前,以前是不是登录成功了。如果登录成功放行,然后呢,登没,如果没有登录成功之后,没有登录成功,跳转到登录页面就这了,所以我们在这个地方要做验证,验证用户是不是登录了,那关键是大家我怎么知道用户是不是登录了呢。证据。
04:01
对,那你看看你以前让做用户登录功能的时候,用户登录成功了,你干什么事了是吧,那我们干什么事了。是不是用户登录成功了,我们往外边往我们往这个什么,我们做了这么几件事,是吧,用户登录成功了,我们做了这几件事。啊,做三件事是吧,第一个返回响应信息,返回响应信息,这是给登录功能来使用的,是不是这样的这样,第二件事我说往sessionsh里边绑了一个数据是吧,往session里边放了一个数据,知道,然后呢,第三件事往外写cookie或者删除cookie了,这个是为了做记录密码来使用的知。啊,所以说大看我们登录成功了,我们做了这三件事,其中大家第二件事往塞镇里边放了一个数据,那吧,那往塞镇里边放了一个数据,我们原来给大家说了,Session是给浏览器用户绑定的时候,他只要不换浏览器,只要他登录成功了,他再访问这些功能的时候。
05:03
是不是都得向后台发请求,那向后台发请求,那这些请求只要登录成功了,是不是都是不都在一个session那个范围之内的,都在session session里边放的数据是不是什么跨请求来来来共享的,对只要是从这个浏览器,他只要前面一开始登录这功能,他在发的访问这些业务资源的请求都是什么从这个浏览器发出的,那说三线里边数据大家怎么都能取到。都能取到,每次都能取到,知道吧。这是我们找啊,当然如果说他换浏览器了,那他肯定就取不到了,知道吗?啊,所以说他刚我们说就这样让我们就是,那我们就这么就可以判断,每次他向后台访问这些业务资源的时候,每次向后台发请求被拦截器拦截之后,就是看看这个浏览器它刚一来的时候是不是登录成功了,如果登录成功了,那就从SESSION10里边获取那个U1定能获取到,能有那反之如果是他登录没没有登录,那30边一定没有放他这个优色没有放的话,从这个浏览器再发出来这种请求去访问业务资源的,那他肯定是吧。
06:12
肯定sessionsh里边是不是没有U,没有U,所以说大看我们这个地方就可以这么来做了,在这个拦截器里边,我们来判断用户是不是登录成功了,就看看session里边有没有user,有说明什么,他在访问业务资源之前,这个浏览器以前登录成功过,那么登录成过,登录成功之后,30里边忘了放出据了,他下次从这个浏览器发请求获取那个30里边一定有,一定有知道吧,那如果没有,没有的话,那呢,他前面一定没登成功,从这个浏览器发出来请求,前面一定没登录功,没成功他就获取不功获取到那什么让他去登录就行了,所以下边我们做这个登录验证了,那登录验证浏览去看看,就如果判断,首先判断一下,就如果知道吧。呃,这个什么来判断这个登录验证,我们来判断用户,如果用户,如果用户然后呢,没有登录吧,我们就这没有登录,你知道用户没有登录成功,被拦截之后,他一访问业务资业务资源请求被这个拦截器拦截了,如果没有登录成功,那这个时候什么则那么则可以让他什么跳转到跳转到对登录页面,跳转到登录页面知道吧。
07:27
好,这时我们说,那如何判断没有登录成功是不是,就看他那个什么session线里边是不是有U,是不是这样子,如果没有U侧那就什么,那就没登录成功,没登录让他跳转就行了,否则如果有他一定登录成功了,那直接放行就行了,知道吧,所以下边呢,我们就来看看三线这边有没有U,那30这边有没有U,我这个地方拿到三对象了。对,被拦截之后,我这个就能拿到30对象,看看他这个浏览器前面登录没登录过,那我要拿30对象怎么能。
08:01
对,从30秒拿优点时拿30拿拿拿30拿拿30对象怎么拿?前面以前有有同学说,老师在这个地方注入一个30可不可以啊。可不可以,能注入吗?对不能大哥,你说老师以前不都是注入吗?以前是在控制器里边是不是可以注入啊,以前在控制器边可注入,现在是拦截器了的看吗?你一注入,你看我这边报错了啊,为啥报错了,因为你这个方法是接口里边定义的,它都没有这个接口里边定义这个方法的时候,都没定义这个参数。所以你实现类里边写出他可以报走了。所以这个地方就不能注入了。这东西不能看吗?那我要获取三人咋过去?对,是不是从请求这边就可以获取了,对,请从请求这边获取,那请求这边有个方法知吧get对,Get算是这样就拿到了知白吧,好拿到SESSION10,拿到SESSION10我们定一个变量来接入吧,Http session对,拿到30知。
09:10
拿到三审之后,那我们说这个三审肯定是给某一个浏览器绑定的,那吗,他只要是发请求了,那这个三审获取的三一定是这个浏览器对应的,在服务器里边对应这个session。那对应那个session,那我就看看这个session里边有没有U是吧,有没有U,如果有这个浏览器前边一定登录成功了。啊,因为一定因为登录成功之后,往30那边放了,那如果没有这个浏览器,他一定没登录,他一定没,或者说他登录长时间没用,那个session能销毁了,那他长时间不用,那session销毁了,销毁了还得让他重新登录知道吧,所以不管是什么样,就看看sessionsh里边有没有UR,那有没有user,那是不是就获取了,获取的话怎么获取啊对get配里边这个key是什么。
10:03
常量对,就是那个常量值是吧,就你别你别写死了是吧,你别写死了那个常量值是吧,我们说那个常量值,那个常量值就这个。对叫content,点它里边有个叫对session u啊放的时候叫它,你取的时候也得叫它好,所以然后呢,这个地方来个右侧,然后呢,这个地方来该导入的类引入一下,那我们说这个地方我们说得强转一下,对强壮一下,然后呢,这个地方来个强壮一下。这样的话,我们就获取了这个三这个U侧了,那这是不是就一定获取到了呢?对,不一定是吧,大家看它是不是等于空,等于空说明什吧?对,说明session里边没有U,没有U说明这个浏览器没登录过。啊,或者登录的已经过期了,知道吧,那还得让它重新登录知道吧,所以这时候我们说,那这么来看看它是不是等于空,如果它等于no成功等于,那那说明30这个什么30多没有U,没有U说明这个浏览器没登录成功,没登录成功让他什么跳转到登录页面,那跳转登录页面怎么跳转。
11:17
对,这个地方有两种跳转方式,请求转化充电项,是请求转换式充电项。对,是不是重定向啊,对重为啥是重定向,对地址栏是不是要改变啊,对要跳转到登录页面地址来改变,拿重定向在这个地方重定向,咋重定向知道什么,能不能直接return,能不能直接这么。Redirect是不是不能啊,对,不能,这是在ctrler里边重定向,这么来重定向现在不是CR,现在是intercept知吗?所以那这个地方重定向是不是得找谁了,对我们自己重定向了,就不能借助框架重定向了,在CT里边可以借助框架spring FC那个返回值重定向,那么现在在1S你得自己重定向,自己重定向咋重定向?对叫send的叫什么点叫这个redire是吧,就这个重内向到哪去,是不是把你这个什么路径写到这对路径写,那这个路径咋写?
12:29
帐下吗?这样行吗?写第二,这样行吗?不行吗?对,这样这样不行,这样不行,为啥大家以前学重祯向的时候,老师是不是给大家讲过,如果自己重定向的话,重定向哪儿去?请求转发,可以直接写那个资源的名称,然后呢,重庆项呢,还得加上什么对项目的名字,大家还记得吗?
13:04
对请求转发直接写这个什么,直接写这个这个资源的名称,就名称就行了,就写你配置那个URL就行了,但是重登项必须加项目的名字。啊,我们这个东方项目名字叫什么?对CR直接加他就行了,当然你到后面他就是访问你这个1L了,知道吧,这你就项目的名字,当然你说老师我后边带个斜杠你知,那这样也行也行,当然你要不带一斜杠可不可以对可以为啥可以呢?对默认到欢迎影这直接这么写就行了,知道吧,所以大家一定要记住哈,你自己重定项的时候一定要带项目的名字,懂吧,那你说老师不对啊,那你以前这个地方你咋不带项目的名字。就是公认就是这个项目,因为是。默认项目,谁默认是项目的?谁默认是项目的?这个地方为啥不是默认是项目的?
14:05
这个地方咋不为啥不是默认项目的,这个为啥默认项目的。这个谁默认的项目?那那你就看看这个地方谁帮你处对象呢?是你自己点吗?不是,那谁帮你?对框架C,所以这个地方我们其实是借助框架帮我们response点知道吗?你只需要什么返回,告诉他返跳转哪个哪个资源就行了。那么底层真的真正的要重定向,必须得执行这个代码,必须得执行这行代码才能重定向,SPAIC这个地方我们是借助,这个地方是借助spring mvc框架。然后呢,来定项目,来重定项啊,怎么借助它其实在底层SPA Mac一直一看到你返回这么一个东西,它就把这一行代码给你翻译成什么了呢?对,翻译成response.send read。
15:15
对,它给你翻译成这个代码,翻译代码里边写什么,对里边前面什么,给你加上项目的名字,我们这个地方就是CRM,然后呢,后边给你加上这个。他在MC底层执行的时候,一看你返回这么一个东西,它就给你翻译成这一行代码执行了。在底层他是这么执行的,这个地方大哥前面这个项目的名字,你说老师这个地方怎么不让我写了,他默认就是当前项目的名字,谁默认的spring m Mac默认的知吧,其实你这么写在底层执行的是这个,大家可以看看spring Mac的源码,它底层你一这么写,他就是执行这么一个代码。就这。
16:01
啊,所以这个地方是吧,这就是框架帮我们带来的好处,怎么框架代码好处,一些默认的数据你都不用写了,你只需要写你要拓展哪个资源名称就行了,他给你翻译成底层代码,执行的时候他给你什么,自动给你加上这个项目的名字,这是框架给我们带来好处吗?知道吧,那我们这个地方是我们自己重定项的,没有人给你加了,你必须按协议写了,协议说了,重定项的时候必须加项,加项目的名字,你自己重定必须加上他,大家能理解这个意思吧,现在对这样了吗?所以说这个地方必须加项目的名字,这是我们自己重定项目的时候,这是我们以前学web的时候,老师给大家讲过的,知道吗?这是重定项时,是自己手动重定项时,知道吗?重定项时必须UR啊,UR必须加啊,必须加项目的名称啊,名称这种。这样的话我们就重新了,好这时候我们说到了这那这个地方,我说这样写其实有问题的。
17:03
有啥问题了,对这个项目的名字你写死了,现在咱们部署的时候叫CRM,万一以后部署的不叫CR了,对叫别的了,这个项目的名字是不是,是不是不能写死了,不能写死应该怎么写?对动态获取项目的名字就是获取斜杠下面项目的名字动态获取咋获取?对这个快是不是找快,对它里边有个方法,哪一个方法对这个方法嗯。对,他这个方法获取的就是什么斜杠加项目的名字,项目的名字,你你以后部署的是什么,它就是什么,这样就动弹了,好这样的话,大家我们这个重一项我们就行了,是。当用户从浏览器上面发出一个访问业务资源的一个请求,如果符合拦截规则就被他拦截了,拦截之后在请求到达目标资源之前执行吗?这个然后判断它30秒是不是有U的,如果没有跳转,跳转到首页去知道吗?
18:13
跳转完首页知道吗?那跳转完首页之后,这个代码还会不会继续往下边执行。会对,默认会继续往下执行,那我们需不需要让它继续往下边执行,对不需要,不需要,怎么对return return return出还是return false对,Return false对被拦截了对拦截了没登陆,没登陆后边的代码都不执行了,而且目标资源也不访问了,终止访问目标资源知道吧。这是我们说账好,这是我们说如果他没登录就直接跳转,跳转之后就直接什么全部拦截了是吧,这是我们账,那如果他登录了呢。对,登录了这个user是不是一定不会空,对,一定不会空,这里边进不来,进不来干什么,继续往下边走,是不是要执行这个return了。
19:06
这个水烫是改成什么,对,改成出就行了,这样的话,我们这个拦截器我们就行了,就这了。所以我们说了,任何一行、任何一个类,任何一行一行代码,任何一个符号,你都得知道为什么这么写。知道吧,这样大家以后是吧,你自己写的时候,你才知道怎么写是吧,你别说别人这么写,我也这么写,不是这样,你必须能说出来原因,这样才真正学会了。好,这样的话呢,我们这个类就行了。
我来说两句