00:00
那咱们就请这个赵高尚同学啊,先说一说啊,其他的几位同学呢,准备啊,我找找赵高尚跑哪去了,我这里边儿人太多了啊,我找找知赵高赵高尚啊,我们先跟他语音连线啊。好了,我们看看啊。大家听一下啊,赵刚上分析的问题啊高你好,呃,高尚同学,请你说一下,你觉得这种设计方案里边呢,会存在哪些问题?我想到的就一个问题,就是那个不产生高,你发吧,因为每个登录请求。都会经过这个去验证一下。啊,高并发啊,问题是咱们这个阶段呢,还不考虑高并发,你得到,呃,我算算第第五个阶段之后,你才能具体涉及到高并发问题,好啊,还有没有要补充的呢。
01:09
了啊,没有了,行行行啊,那我们先请赵同学下去,我们再找其他同学问问啊,找谁呢?我们看看啊,得找一些咱们这个没聊过的同学,哎,哪有同学不放上啊,不放上帮我看看啊。呃,这个这个这个这个这个这个这个这个我们看看聂毅,聂毅同学啊,来咱们添加个好友,聂毅在吗。啊,聂聂毅,聂毅同学在吗啊。我加你好友了啊,这个那念那不是念一啊,是这个第三个啊,义气的义啊义气。呃。我们看一下。聂毅,聂毅在吗?聂毅同学在吗?啊,我们看看啊,加个好友呗,聂毅毅不在。
02:10
聂毅不在啊,聂不在,那再换一个吧,啊,看看,那就张经纬吧,啊,张经纬,我们找张经纬同学说一说啊,看看这个问题啊,是不是会把我们班儿里团灭啊,团灭张经纬同学,哎,我们看看啊,哎,看头像很帅一帅哥儿,有我年轻时的风范啊,我们去看看啊,好了,在哪边瞅一下啊,诶。那个张晓宇同学你好啊,你好你好,那个你能说一下这块你看出有什么缺点吗?呃,我感觉就是一个是它比较麻烦,每次访问的时候都得是就是再绑一下那个需要一个理牌。
03:00
啊,然后还有就是这个一旦就是客户端的这个计算机关闭之后,这个令牌会消失的啊。就是那个转码用户也进不去了,就跟那个。那个端的那个链接就消失了,嗯,那你客户端都关闭了,还要这令牌有意义吗。人都走了,这令牌给他留着本来就没意义,你不觉得吗?是不是因为客户儿走了之后,你并不知道客户他还会再来,他走完之后呢,可能隔一分钟还来,他可能这辈子不来第二次了,他这个令牌那么难道给他留着吗?浪费内存嘛,不行,对不对啊,所以说这个东西呢,说的也不对啊,也不对,还有没有补充的。呃,暂时就想到这两点啊,也不对啊,没有一个靠谱,好,我们再换看看,再找找,哎呀,再找找,我们看看啊找找啊说找找这个我们说啊,我们说找个妹子,哎,找个妹子听一听,找哪个妹子呢,我们看看啊张。
04:19
张雨伦。啊哈,张雨伦在吗?我们看也是老张家的啊,我们看啊张啊,张雨伦啊,我看雨水啊,张宇伦在吗?各位啊,张宇伦同学在吗?在不在吗?在不在?张雨伦是这个伦啊,这个伦,张雨伦在吗?啊,张雨伦在吗?倩倩和和蕾蕾啊,你们想听倩倩和蕾蕾的声音啊?是听倩倩来听蕾蕾的同学们,你们是要听倩倩的声音,还是要听蕾蕾的声音?感恩,说一个啊。
05:02
啊,老崔的,老崔的,不可能老崔他上课啊。挺好催的啊,我们看一下啊,听商场赵高尚说完了,李松你才睡醒啊。啊,那咱们再找一个同学啊,我找同学啊,找这个,我们说找谁呢,我看啊,啊还有哪个小姐姐,我看看咱班。等等一等啊啊聚接我们看一下啊,咱班还有谁是妹子呢,咱们看看啊。哎呀。要不再再去找倩倩吧,再找倩倩吧,我们找张倩倩好不好啊,我们等等,让张倩倩去聊聊她的问题,班里边妹子太少了,所以女生被叫的这个频率会高一些啊啊诶等等,薛晓涵是不是一个妹子啊?薛晓涵是不是妹子?
06:00
啊,当然,试试要加上啊,徐小小啊,徐小涵是个妹子,咱们没教过这一位同学啊,来来来来来来来来,我们。看啊,学小孩啊,看这啊。小韩同学,你好。嗯,老师你好,八个挺好,不用客气,不用客气了,咱不用讲客气了,来你说说这个方案里边儿,这个设计方案里边儿,你觉得有什么缺点。那个三。他是不是他不是在那个。那个。服务器上嘛,然后他会不会占用那个服务器资源啊嗯。会占,但是没办法,总得给你在银,你说银行,你在银行的那个保险柜会不会占银行的空间呢?会呀,但总得有一个呀,是不是,嗯。然后那我也不知道了,当访问增多的时候,就是他就是。
07:09
别哭别哭啊,冷静冷静啊,别哭啊,大家都听着呢,啊啊,没事儿好好说。查一下,那我们要等多久?啊。它保存在服务器客户端,不知道其中的信息。它保存的是对象,然后它不能区分路径。同一个用户在访问一个网站期间,所有session在任何地方都可以访问到。你说的你说的这其实是优点,你说的这个优点啊啊啊,没事没事不要紧张,没事啊,没有事没有事啊行,你先下去休息休息啊好了,呃,我们看看啊各位啊,不出所料啊,基本上是团灭啊团灭各位啊,正常你们现在在新人村啊,其实呢,也说不到点上,这是很正常的啊哦,那我们给大家说一说啊,刚才那个叫做薛晓涵的女生啊,薛晓涵的女生啊,我有他微信啊,有同学喜欢可以加一下啊,还有小姐姐嘛,好吧。
08:28
咱们说这这个问题来于哪里啊,我们这个阶段先不考虑高并发,等到你第五阶段之后呢,我们再说高并发的问题,各位啊,它有什么缺点呢?首先啊,第一个问题在这里边呢,他会去干嘛呢?他会去增加我们的这个开发的难度,那么这句话怎么唠呢?大家请看在我们网站中呀,那么需要被保护的S是不是永远只有一个呢?不是的。
09:01
其实理论上来讲的话,我们网站中所有的threat它都需要被保护啊,对不对,它都需要是由合法用户来调用,那个非法用户掉哪个钻的疼啊,就要你身上这零件,你知道哪个零件可以可以让不认识人捅一捅呢,对不对,不乐意不乐意,所以在这里边呢。它会导致什么问题呢?导致每当你去开发一个新的serve light的时候,除了要完成这个server light它本身的这个服务开发之外,那么在这里面你还得来一段重复代码,那么代码呢,判断来访者,来访者他的这个什么呢?身份的合法性,你把这个写完了之后,你才能安心的去写什么呢?写你的服务,写你的服务,那么在这里边第一个问题,它增加了我们开发的难度,每一个所里边都得进行一次合法性的安排,也就是说。
10:09
User find中的这段代码要在所有事里边都出现,重新开发,增加开放难度,这第一个问题,哎,我们在添加过程中呀,避免什么呀,避免我们说一段功能相同的代码在多个地方重复性开发,这就是我们说要做封装的一个原因啊,在这儿。那么第二个问题是什么呢?哎,我们看一下第二问题,它不能干嘛呢?在这里边它不能对我们的这个静态资源文件来进行保护,说卫生部能我们这边啊,来一个来一个静态文件,比如说index表H前面文件好,它是一个静态文件吧,静态文件。
11:00
那么问题来了,当这个用户来访问这个文件的时候,我们说在HTL里边能写加va配令吗?能去要求得到session吗?不能说这个再来一个,比如说用户访问的是我们的一张图片,也是它也是我们说的什么呀,哎,一个精彩资源文件,你谁能在图片里的编程,我看看就给我给我的图片,我里边通过像素做编程到30,不可能,这不可能啊,绝不可能。所以在这里边,在这种原始的设计方案中啊,它存在两个弊端,需要在每一个S里边,在开发时都要进行一次用户生成判断,此外呢,只能对动态资源文件进行保护,而不能对啊,只能对动态资文件进行保护,而不能对静态文件做保护,静态文件我是一个用户,我来恶意访问的时候,那我写地址栏。
12:01
啪,我直接进去对不对?我直接进去,我想看精彩文件易如反掌,所以这是这个方案中的两个缺点,哎,那么如果把这两个区陷解决了,哎,我们这个设计方案就比较完美了,说什么呢?不需要在这些塑料里边重复性的去判断当前用户的身份的合法性,不增加我们的开发难度。第二个呢,不仅能保护我们的动态文件,还能把静态文件也囊括在保护范围之内。那么怎么解决这两个问题呢?过滤器就是过滤器,来,我们画一个重新的草图,我们看一看啊,在这行了。是不在这里边呢?大家请看啊,这边呢,是什么呢?是我们的登录页面,咱们这个图啊,好好画一下,写上log应用,点HL文件,那么正常来访的用户呢,需要填写用户名和密码,那么这个网页呢,会要求浏览器呢,把请求发送到服务端,交给我们的这个登录验证,Re,就是log in好了,L log in select,那么他将在这里边判断用户是否合法,以及要不要给这个用户颁发令牌,那么在这里边我们看一下啊呃,合法的用户,那么如果判断是合法用户的时候怎么办呢?这里边HP session给用户发一个令牌啊,比如说session啊,Session啊在里边。
13:38
写上我们说这个section好了,等于Iq.get session5餐好了在这,那么如果是我们的这个非法的这个用户呢,那么就是拒绝服务,不认识您啊,不认识你行了,那么接下来我们看在我们这个网站里边呢,我们的资源文件分为什么呢?动和静。
14:04
比如说在这里边,这个呢是one啊,大家想着啊,比如说叫user a吧,User a serve啊在这,然后这个呢,是咱们说的这个user find,这他们都可能被我们的用户来以恶意的方式来访问,还有什么呢?我们的静态文件,比如说我们看一下在这里边我们说这个谁呢?写上index.hl文件好了,那再比如说网站里边放了一些图片,诶这些软件凭什么我网站里的图片要给不认识人看呢,对不对?那么现在呢,我们看看啊,这就是令牌,这就是令牌,我们要解决两个问题,第一个所有的所在开发过程中不需要判断来访者身份,第二个把我们的资源文件从动到静都保护起来。
15:02
那么怎么办呢?在这里边就是我们的过滤器了,哎,来一个过滤器过来这个过滤器好了,那么这个过滤器干嘛呢?首先在这里边第一件事情,那么它呀,要通知通知我们的tomcat干嘛呢?在调用,在调用任意文件之前都要干嘛呢?先去调用当前的这个过滤器啊,当前的这个过滤器,那么这时候怎么写呢?我们刚才啊给大家讲过一个格式URL pattern,诶在这什么呢?斜线清星啊,斜线行星,哎,甭管隐他们要调当前网的哪个文件,都得让我这个过滤器来干嘛呢?蓝翔,所以此时我们啊被保护的文件就不仅仅于动态文件了,也限于我们说的静态文件好了。
16:03
然后第二步过来,第二步,那么在我们的这个什么呢?在我们的这个do filter这个方法中,那么向拦截的这个请求来索要什么呢?索要他的这个HP session,我们拦下了,告诉他先别调这个文件干嘛呢?我问问这哥们儿,他有没有这个令牌。好了,那我怎么办呢?看好了htp session,然后写上re EQ等于I,写错了session等于Iq.get session什么?我也不知道这哥们是好人还是坏人,所以get section false好了,然后在这里边if,我来写上它,如果呢?如果这个section相当于,那相当于呢,我把你拦下的,我看那你没有腰牌,那小子你能进来,你不是好人,那么这时候怎么办呢?拒绝,我们看一下拒绝服务,那么怎么拒绝呢?Res response点3READ什么呀,Readdirectdire,然后给他一个什么呢?给他一个错误的什么呢?这个登录页面er.HL在这这拒绝服务了,好了,同时。
17:29
干啥呢?韦泰不走了,然后else,诶,这哥们被我们拦下,这哥们儿身上有令牌,那怎么办?放心,哎,在这儿我们看看啊,放行,那么怎么放行呢?找到过滤器链条对象,把我们刚才抢过来的这个请求对象和想要对象还给他CAD,让他CAD根据原有的请求去调我们的资源文件,在这儿,诶,在这,那么这样的话呢,你看被保护的资源文件从动态文件一直扩展到静产文件,甭管你找谁,你看甭管你怎么来找,是正常找还是非法找,你的请求都将在我柜系里边被拦下啊,范围扩大了,然后在这里边呢,在督促方法中,我们来判断用户有没有这个令牌。
18:23
有怎么办呢?放行没有呢?回去回去,这样的话,我们网站中的这些,他们在开发的时候还用不用去考虑去验证当前来访用户的身份呢?不需要了,只需要干哈呢,只需要在这里边写对应的服务就行了,啊这是添加服务,那么这是什么呢?查询服务,哎,在这看到没?哎,在这儿,所以接下来呢,根据这个思路,我们改一下我们的程序,改一下程序好了,回过头来,那么在user fund里边这段代码呢,不用了,专心写什么服务就行了,好。
19:05
看好了,然后现在呢,我们开始做了,在我们当前零六网站下面,我们新建一个过滤系类好了,写上什么呢?写上filter,第然后咱们写上来filter啊,My future保存好,写上哎,Filter,哎过,然后在这里边呢,Ctrl o,然后重写这个方法,重写什么方法呢?Do方法,他为什么啊啊没反包,我纳闷了,他为什么不给我提供这个重写方法呢?好了,Do filter,哎,在这看好了,那么在这里边呢,我们看看啊,在这里边想第一件事情啊,说拦截后,那么我们通过这个请求对象向我们的tomcat去索要,索要当前用户他的这个HP session,跟他们说老铁啊。
20:06
这哥们在咱们这有没有柜子request.get咱们写上什么呢?Get这个session fo啊get session,诶,哦啊,他不叫这名字啊,它叫做虽然就快改名了,Get我们说的3FO,诶,写完之后呀,有点小尴尬了,小尴尬了。怎么调不出来这个呢?怎么调不出来呢。为什么调不出来呢?它不是请求对象吗?好,你看这把这个请求对象啊,它是由我们的这个复利接口serve request来修饰的,在这个接口里边你找一下。Get session没有这个方法,这个方法呢,只在其子接口http request有,那怎么办?
21:01
那怎么办?那简单呀,转呢,从负接口转成子接口来好写了htp serve light request好了过来,然后等于这块做强短啊,做强短HTP算request写上它,哎,在这个地方我们做强转啊,强转拿到这个request,现在这个接口里边有没有我们的这个什么呀,有没有我们的get session呢,找一下。有没有有看到没有,有这个方法了,哎,那么现在咱们写上了,写上呢,request.get session,我们说的这个false,哎,False行了,我们拿这个东西HT session改一下,行了,到手,那么到手之后呢,做判断,哎,我们看一下啊说呢要判断来访,来访的这个用户,他的这个什么呢?他的这个身份的合法性问题,可法性问题,好了,那么在这里边我们去看看怎么办呢?那么起个衣服喽,还能怎么办?If说如果session相当于呢,这哥们在我们这没有贵子,那不伺候,那不能伺候,那里边呢,咱们写上啊呃,你看response点什么呢?Send咱们也调不出来的话呢,Send呢,看这个。
22:34
接口在这接口里边找一下啊,说什么dire没有。别看这是响应对象的负接口,它里边没有这个方法,奇怪吗?不奇怪,继承的过程中,我们说同学们一般只记得在继承过程中,子类可以得到父类的资源,但是同学们还忘了另外一个问题,在继承过程中,实际上也是子类对父类功能的一个扩充。一般初学者只记得啊,继承子类拿父类的东西,他忘了另外一件事情,继承的目的是为了让子类来扩充父类的功能。
23:13
所以怎么办?把这个想象对象转换成其子类接口来修饰htp serve that response啊,Reps response,写上resp response好,在这里边TP,咱们写上response好转一下,那么转完之后呢,那么在这里边哎,咱们做一下,咱们写上pass点呃,S我相信啊,用那么费劲吗?哎,请求转发得了,请转得了啊,费劲啊做请求转发request.get request早什么呢?早,我说这个早log in点文件告,把这个东西塞到想要启动给这哥们告诉他不行,进不来request threat response行了那。
24:14
代码干嘛呢,给他负责的。好了,那么如果这个客户他的session是有的,那我们看怎么办呢?往下走,在这第三个,那就是放行走人filter啊,当然写上T,然后点do filter,我们把这个request,把fair pass还给人,逃不开的,你去调吧,行了,你看寥寥的几行代码,我们说代码不是写的多,功能就强大,你的代码呢,有时候只要几行诶就可以改变一段程序好了,那么接下来呢,我们写一下配置文件,告诉他们看有一个过滤器出现了哦,在这我们看一下啊,写上关于我们说的这个过滤器它的注册,哎,行了,然后在这儿呢,就写上了,说有一个过滤器啊,然后给他写名字,比如说叫做one future,那这个是谁呢?在这里边写上。
25:17
看不出的这个filter class class cm点的点filter.one filter好了,然后再告诉告诉toca,你在调哪个资源文件的时候,得让这个过去拦一下哪个文件,哪个文件都都要,都是,所以写上什么呢?Filter map filter map you,斜线星星。搞定搞定,所以为什么让大家去画流程图呢?你光看这个类,你在项目里边拿出一个类光去这么看的话,你看到云山你绕的,所以呢,你得知道他在这个流程里边充当的是何种角色,他的前面是谁,后面是谁,就像我给大家画的这个流程图一样,在这儿这么看就清晰,你要脑子里没有这个图,你这么看这种类,我跟你讲云山雾罩看不懂行了,那么现在呢,我们。
26:17
走一下啊,重新走一下,我们看一下啊,你看咱们这网站里边已经有监听器和过滤器两个了,好了。启动,呃,启动完毕之后呢,我呀恶意登录一把给你看看啊,那么此时我要在我的故意其身上设一个断点,这断点我恶意访问谁呢?我爱访问谁就访问谁都会失败的,那我访问什么呢?我访问user find threat请求给到tomca to要掉这个资源掉的时候怎么办呢?过滤器出来,别急,我来帮你问问走。
27:05
好看这。过一起出场了。说来我帮你问问啊,把这个请求对象和想对象叫过来,问问你在我们服务端有没有柜子呀,那我能有吗?没有啊,能看到没有,能跪下none啊,我行不行行走呀啊是吧,那个我告诉contactcad,把登录失败页面给你,你重新登录一下好走,哎看这不存在,那我一看动态资源文件明细了,那我去打静态文件的主意。在这里边我访问什么呢?我访问index.hl文件,我访问他,我看看这那么过去好发请求给他们看,他们要干嘛呢?要调这个文件,但咱顾滤器跟他们说的好好的呀,说什么好的,但凡这个网站中随便哪个文件,你要调用,你得跟我知会一声。
28:07
所以你看在他们调这个文件的时候。走缓存,各位,这是缓存啊,这绝对是缓存啊,我们看一下,我们先清清清下,气死我了啊,清理清理清清,不能这么玩儿啊,我们看晚节不保,这是缓存,不不开玩笑说,这真是缓存啊,这是缓存好了。你看啊,从前而过啊。走哎,过来了,看这过去拿下了,说告诉他们先别定啊,我问问你在我们这儿有没有柜子,就是没有没有是吧,滚啊,对边走着啪,你看,甭管你现在想访问当前网站的动态文件,还是访问当前网站的静态文件,诶都有过器做一次拦截,他就像个检查站一样。
29:02
拦下人就问有没有柜子,有那么放你走,那么没有呢?不好意思,那么一边量取好了,那么接下来我们试试,那么我们合法登录呢?看这个流程图,各位合法登录,我在这边写上合法用户名Mac,然后写上合法的这个密码,123点击提交发请求发送给Tom cat,让Tom cat掉logging f来判断我的身份,如果判断成功的话,那么此时我将有一个令牌了,对不对,能不能行呢?试试看看啊,写上什么的线上卖,写123来给我在脑子上出流征图,当我点击提交的时候,浏览器把这个请求发给谁同们看看,他们说到请求之后要调谁呢?要调我们的这个这个这个logging threat屌,他能不能成功呢?能不能成功,各位能不能成功。
30:02
不能不能,为什么呢?走好了,看怎么地了。规矩又出来了。因为咱们跟他说的好好的。甭管你调哪个文件歌,都要拦一下。然后惠斯好了,说你想干嘛呀?说我想去钓loving f来检测一下这哥们啊,合不合法,好决定给这个哥们儿,好决定要不要给这哥们发个令牌好过去说明白了,那我先盘盘他,哎,你有没有令牌?你看问题来了,你有没有令牌?我能有令牌吗?我是来做登录申请,来申请获得令牌的,我肯定没有啊,我说我没有令牌啊,好了,怎么办呢?那没有令牌是吧?走人,没有令牌的人不准在我们这里边儿申请获得令牌,诶,走,尴尬了,尴尬了,你看,一不不经意间我们写出了史上最安全的一个网站,这个网站有多安全呢?恶人进不去,自己人也进不去。
31:12
就好比什么呢?你给地主家修个院,地主说了,你要确保我的这个院子万无一失,你就想想,想想怎么办呢?想出了方案了,别留门建墙,把院子围起来,不留门谁都进不去好了,那么这时候这可是个bug啊,这个是个bug来,那么这是一个bug,不假,那么这个呢?留做今天晚上的一个思考题。说说你看你怎么解决了,你想怎么解决,说我怎么能确保这个登录验证在访问,在访问我们说的这个登陆座的时候。它不需要由过滤器来检测其身份,当然了这个题,这个题包括今天上午所讲的那个提升效率的题,不是必须要做作业,看各位同学的水平,看做什么水平,你感觉我今天听了感觉能跟上老杨的进度,那你今天你就晚上尝试做一做,改一改,然后我说哎,老老杨今天你讲的东西吧,我云山雾海,那先别碰它,说明你功率还不够,你还是抓紧时间背流程图,背思外的规范原理啊,什么其中的大家平常有什么区别啊,什么数据共享,有有什么,有哪些方案,这些方面什么实施,你先讲这个不着急,好,那么这个就留做今天晚上一个任务,这个图呢,哎,也看一下,这个就留今天晚上大家思考任务啊,明天公布答案,或者你既然想到了,你可以跟我说啊,你可以跟我说,或者你尝试啊,在上面改代码啊,那我们看一下。
32:55
这个呢,就是我们说的这个,利用我们说的这个过滤器,利用过滤器来防止什么呢?防止我们的用户他的恶意登录啊,恶意恶意登录制度冲突,听明白没没有各位。
33:10
今天晚上你要觉得诶,我能听懂一点的话,你把什么呢?你把我们所写的这个领DA里边的这个监听器啊,提升效率玩一下啊提升效率一下,然后你觉得今天讲的过期,哎,我觉得我听没没毛病,你呀尝试做一下这个做看看怎么能够确保用户在做登录申请的时候能放他过去。能过去,哎,这些东西先想一想,如果你感觉不行的话,基秒背流程图,基秒背群主两大同像的区别,给我背server contest session cookie,它们在共享时的特征,行了把。
我来说两句