00:00
首先呢,我们先来看我们的第一个内容,咱们就在这个权限管理模块中整合一下这个里边的全框架,或者说安全框架,叫three security,把这个整进去,那怎么整合,咱们一步来看啊,首先第一个内容。我这里写一下啊,咱先讲一下这这个东西到底是个什么东西,包括它有什么特点,给大家先做个说明。啊,就这个框架的这么一个介绍。那这个啊,给各位来说一下啊,咱们看一下我这个课件中,咱今天到了这个这18课件啊,这个课件一会我重新共享一下,跟之前稍微有点区别啊,然后这个课件中的第一个讲到了w security这么一个介绍,那我们来看一下啊,然后给大家我在笔中写上它里边主要的这么几个重点的几句话。咱们读一下啊,我这里写到啊,说是一个非常流行和成功的Java应用开发框架,因为咱之前用,包括咱用boot,各位也知道boot本质上是不是就是只是说啊,他把做了简化,是一个快速构建项目的这么一个脚手架叫BOO嘛,但是它本质上就是,而在这spring里边呢,它就衍生出很多的框架,比如说咱们今天用这个叫又是基于使人框架的做的这么一个叫安全的一个框架或者一个。
01:34
权限的框架,这个各位知道啊,它本质上就是也是满足里边的各种特点,另外大家往下看啊,我这里写到就这个threat各各位可以理解为它主要包含有两部分,就这两部分,一个叫用户认证,一个叫用户授权,这是它包含的两部分,那给大家写下啊,我写这位置。
02:02
这句话要各位记住啊,它包含有这么两部分内容啊,具体说应该说主要包含两个内容,哪两个内容呢?第一部分叫用户认证。然后第二部分叫用户授权啊,这是它主要两部分,那这两部分具体什么意思,给大家我来解释一下啊,说一下这两部分到底什么意思来看,第一个啊叫用户认证。什么叫用户认证呢?大家看这词。认证。认证什么意思?什么叫认证?说的简单点啊,就是咱们通俗说这个用户的登录,比如说你现在要操作一个系统,咱是不是要登录,而登录过程中咱是不是要输入用户名和密码啊,当你用户密码输入,他肯定要查数据库如何判断你输入这个用密码都正确,是不是就通过认证就可以做他操作,这个就叫用户认证,那有写到通俗点啊,就是咱们进行。
03:10
用户登录的时候。我们肯定要输入用户名和密码,然后输入之后他要去查询数据库,看我们输入的这个用户名和密码是否正确,如果说他正确的话,那这个时候表示咱这个是不是就是登录成功,或者说叫认证。成功了,这过程就叫用户认证,说的通俗点,就是咱说的这个用户登录啊,这各位都知道啊,然后除了它之外,里边还有第二个叫用户授权,那什么叫用户授权,给大家说一下啊,第二个。用户授权这个其实也不难理解,给各位举个例子啊,比如我现在我就是登录了我们这个系统,然后登录之后各位注意啊,我这个登录用户是不是它可能就是有,或者说可能是不同的这个。
04:08
角色,什么叫不同角色呢?就是比如说我现在登录的用户是一个管理员,那管理员是不是就能操作我们所有这个功能。另外再比如说我现在这个登录用户。啊,登录用户他指一个就是普通的用户,那他操作的这个功能是不是肯定要比这管理员要少很多,所以这叫什么,就叫授权,也就是说你用户登录之后,根据你的角色给角色授权,你可以做什么操作,比如说你的管理员,那管理员肯定能操作这个功能,如果说你是普通用户,那普通用户操作功能肯定比管理员要少很多,比如他只能操作课程,只能操作什么讲师等等,这个叫用户授权。所以我们说security主要做两个事情,一个就是用户认证,一个就是用户授权,认证理解为就是登录授权,就是让用户能操作哪些功能,这是它两个最基本功能,认证和授权啊,各位把这个知道啊,一会咱就整合它实现我们项目中这个功能。
05:19
但是他主要做到了认证,就是登录第二个授权。这个啊,各位领导知道啊,然后下面写这个,就是刚才我解释的啊,指这个说的比较官方,你看这个用户认证指的就是验证某用户是否是系统中合法的主体,也就是说是否用户能访问该系统,就是咱说的登录吗?用密码对不对?然后用户授权指的是验证某用户是否有权限执行某操作,就咱刚才说到的,比如管理员肯定所有功能都能操作,如果你是普通用户,他可能不能操作某些功能。啊,这个就是认证和授权,各位把这个知道啊,咱说的第一句话,然后咱再看第二句话啊,我这里写到。
06:02
主任,其实他就是个什么。这个东西这叫什么过滤器嘛,它是通过过滤器对你的请求进行过滤啊,就是它本质上就是一个过滤器。这给大家写下啊,各位记住第二句话。我小的位置。第一句话,两部分认证授权。第二句话,各位记住,Spring它。本质上。就是一个什么过滤器,或者叫这个filter啊,这是他的第二句话,就是他对我们的请求进行过滤啊,对我们的请求。进行过滤啊,这是第二句话,然后咱们看一下我的文档中啊,我这里边列出了两个例子,就是它做的一个过程啊,咱们看一下啊,它的一个过程,然后这里边怎么做到,其实这个过程咱之前都做过。来看第一个啊,就是如果说啊,你现在做这个操作中是基于session实验的,那so怎么做的呢?它就会对cookie里边的session ID值进行解析,然后找到服务器中的session,判断是否是当前符合要求的这么一个用户啊,就是这是session,也就是说咱们之前从session中取值过程,现在都是由security帮咱做到的,比如我们之前用set session.set at tribute向里边是放数据,而咱们通过get aribute从里边是不是取数据啊,但是现在这过程是由会帮咱做到了啊,这是他给我们做的事情,就是咱们执行原始方式就是用框架实现了。
07:42
然后这里边还有第二种方式,如果说你不是用session,用token,那怎么做呢?会帮我们解析出这个token,然后根据当前请求加入到这个管理权中去,就是根据token得到你的用户信息,然后得到用户对应的这个权限信息,加入到此利率中,用它做管理。
08:05
就这两句话呢,是解释了它这过程,说的通俗点什么意思呢?咱之前做这过程,比如我们之前用偷开,偷开咱是放到什么地方再取值,包括再往里面放置,包括section取值放置,这些过程现在都是交给spring security帮咱们去做了,不需要我们再手动往里面放,在做什么事情,这些由three the去实现啊,所以这个是他的第二个特点。本质上就是一个filter过滤器。只是现在我们用的是一个框架嘛,各位要明确一个思路啊,咱用框架的目的是什么呢?是不是就是为了少写代码,少做操作,让框架帮咱实现某些功能,所以用它就会帮我们实现之前我们做的很多事情啊,所以这个关于它的一个描述。然后这里边我写了两个主要的两句话啊,最终我们再重复一遍啊,各位知道,第一个so是由里边的一个安全框架,或者说权限框架,里边主要有两部分,用户认证,用户授权,然后文本质上就是一个过滤器,就是进行对应的请求做过滤,而它里面过程中不管你是用session还是用token,把里面的过程会帮咱做到,不需要咱们手动做事情,它里边帮咱们封装了很多过程。
09:30
这是关于的这么一个介绍啊,各位把这知道啊,然后我这下面呢,列出了一种就是认证和授权的思路,这思路其实并不复杂啊,我给大家读一遍,然后咱们画个简单一张图来画下这过程怎么样。也就是说啊,咱学之前先说它的原理,然后再做整合,整合很简单,就是一些规定代码,但这过程你要知道,只这过程咱一会儿整合中其实看不到,他会帮咱们做了啊,所以现在我讲的是他这个原理是怎么做的,就是他底层怎么实现的。而比如说以后各位在面试中,那面试关要问你什么,他不会问你怎么整合,因为整合咱都会直接复制几个固定代码就能整合出来,他问什么就问他底层,比如他问你spring,它底层是个什么东西,咱要知道说过滤器,然后别人问你这过滤器底层是怎么实现的,咱就要给他说这个过程啊,他问的咱们回答就这个内容。
10:28
那我给大家来说一下啊,他怎么做到的,就这段话我们先读一遍,然后给大家画图。大家看啊,我这里写到,如果说啊,你系统模块很多,那每个模块是不是都需要你授权认证,也就是说我现在比如说有edu,有vod,有什么其他模块,而每块访问咱是不是都应该需要登录和认证,这个操作就是登录,然后才能做其他操作,登录之后要判断有没有操作权限,就是都需要登录和认证,然后在过程中这里边。
11:00
我们选择这种形式token做这操作,因为咱之前单点登录用的token吧,然后怎么做到的,这里写到啊,就是用户根据用户密码进行认证成功,然后获取到当前用户的一系列值,就是一系列全限值,什么叫权限值呢?就是他现在能做哪些才能操作,然后并且以用户的key。呃,就是用户名为K,然后权限表为value,把这值放到咱的ready中,然后翻完之后怎么做?根据用户名返回它这个token,把token的返回,然后token返回之后在里边把token放到cookie中,然后再放到咱的handle中,而sweet RI在解过程中,它会帮我们从he中取到token值,根据token值得到用户名字,然后根据用户名字read取数据,最终隔离过程。啊,主要就是这么一个认证授权的思路,这是啊一个简单的一段描述,那这描述我给大家啊画一张图,咱们来详细再说一下这个过程。
12:04
要求各位把他底层的认证授权这个实现流程各位给他要记住啊,以后面试中如果别人问到你比别人可能用不同的方式问你,大家回答的基本上都是这些东西啊,只是别人问的不一样,可能别人问你说你们这个就是权限过程怎么做到的,咱肯定说我们用的是,或者别人问你你用了什么so吗?咱肯定用过,然后别人问你它底层怎么做的,它底层是个什么东西。所以各位。给别人回答的,就说这些东西。那我这里边啊,给大家画一下这个流程是怎么样的,再来啊画一下。然后比如说我现在啊,我就这么来画啊。比如我现在这里边呢,假如说有很多这个模块啊,咱以两为例,然后比如说我这里边再画一个地方。比如说这个地方啊。那咱就画到这样,我这么来画啊,比如说现在我有两个模块啊,这是两个,然后这两个模块之后,比如现在我们下面还有两部分,这个比如理解为是我们那个spring部分,然后这里边还有一个地方,比如是我们那个ready的部分啊,这个啊是我们的几个内容,那我画一下,比如这是我们那个。
13:20
模块一。这是我们那个模块二,或者说有更多模块,然后在模块下边这地方也如是我们那个叫。RA。然后这是我们的一个。这个啊是咱一个结构,然后这个过程中,咱就给大家说一下他怎么做到这个认证和授权的这个过程啊,我来具体画一下,比如说我现在我要做一个登录,那登录的时候呢,怎么做到呢?它里边比如说我们现在在某一个模块进登录,假如我现在就在第一个模块做登录了啊,就这位置我们写上它的。
14:01
第一步啊,这位置我写个一,在这里边我们做一个登录。或者说你叫认证,然后他在登录中呢,肯定咱要输入他的这个用户名,还有他的密码,是不是进行登录,比如我们现在在模块一,我输入用户名和密码,我要做这么一个登录啊,就是里边说的这种形式,那这登录之后,这里边会怎么做呢?咱们肯定要查数据库,是做操作,而我们查完数据库之后,就根据你的用户名,我们要查询出一个东西,就是你这个登录用户,他那个权限的这么一个列表。啊,权限列表,什么叫权限列表呢?说的简单点,就是我这个用户啊,能去访问哪些菜单,假如说他能访问用户管理和什么课程管理,这叫权限列表,所以咱第一部分就是登录,先做一个认证,就是查数据库,看你的用户密码对不对,如果对的话,那查询出我们的权限列表,也就是说你的用户能访问哪些菜单,把这做到,然后这个查之后我们怎么做呢?把这些数据咱先给它放到一个地方,叫ready。
15:15
这个啊,我写一下我们的第二部分就是到这个位置啊,这里边我写个二。二里边我们做什么事情呢?小这位置啊,就是像我们的RA里边放数据,然后它的key,还有它的value啊,因为ready是key value结构嘛,它的K里边放什么,就是你登录成功之后的用户名,Y6中放什么是在那个就是用户的这个权限的。列表啊,比如说你操作可以有什么讲师模块,什么用户模块,你能操作哪些菜单,把这个列表放到这个value中啊,这是我们的第二步,就是把你查出来的这个数据放到value中,它的key是咱的登录成功的用户名,Value是我们的权限列表啊,这是我们的第二部分。
16:06
这各位就知道啊,然后这个做到之后,下面还有第三步,就当我发完之后呢,咱要根据用户名返回一个什么token数据啊,就返回一个token。这里边我写一下啊,第三步。我就给大家写到。这位置啊,就是第三步咱换个颜色。这个颜色。第三步就是返回它那个token,那个就是字符串,咱可以根据我们之前说那个这WT生成它的token字符串,把这个值我们给他做个返回啊,就是现在你先登录认证,然后放到write中,然后放完之后给用这个用户名返回这么一个token,或者说根据用户ID啊一个token。这个啊是我们的第三步啊,位置我写个三,然后这个做到之后,下面我们进入到第四步,第四步怎么做呢?就是咱们之前一直做的方式啊,大家可以把这token放到cookie中,然后每次调用再放到head中,跟之前一模一样啊,就是里边的这个步骤。
17:10
我写一下啊,比如现在小这位置。这是它的第四步。这里啊第四步,然后第四步做法就是咱把这token先给它放到这个cookie里边去,然后你每次请求在我们的hier里边,再放你的这个token这个值啊,这就是他的第四步。然后这步做到之后呢,下面事情都是交给security做到,就是第五步,我们都是在这个里边啊,就这里边。画一下啊,这是第五步。然后第五步要怎么做呢?这是由three做到,它的做法是怎么做,先从hier中取到token值,然后得到ton中的用户名,拿着用户名从re中取到权限列表,并且给你这个用户复制一个权限啊,就是最终交给做到。
18:07
第五步。我小弟位置啊,它的做法就是。从hi的里边。获取到你那个token值,然后获取之后拿着这个token值啊,或者说从token里边获取到它那个用户名,因为咱是从里边推荐用户名生成的,然后他再拿着这个用户名从write里边获取到你那个权限的列表。啊,权限列表法律得到,这是他的第五步,然后这个都得到之后,里边进入到最后一步,最后一步做什么事情呢?他就是拿着权限列表给你用户做这个权限的赋值,让他可以进行这个操作啊,就是第六步。就最终这步。我们由这个。就是。
19:01
UY啊,给我们这个当前用户赋予这个权限。让它可以进行相应的这么一个操作啊,所以它主要就是里边的这么一步骤,通过这个步骤完成这么一个操作,也就说这个步骤中啊,核心在security,如果说你没有给用户赋值,那用户他就没有任何操作,就是最终这步,比如到第五步,然后到第六步,他要把这权限得到,再付给用户,用户才能做操作,也是你在第一步的时候,虽然说查出了权限,但是他不能访问,咱要给他经过最终把过程做到,这是咱说的一个基本步骤,按照六步把这个做到啊,这是一个执行流程啊,我再读一遍啊,各位把这句话给他好好去记记啊,以后面试中问到你说的就是这个东西。然后再重复一遍啊,他怎么做到的?首先咱先登录,登录之后用户名名用户名和密码,然后查数据库,如果登录之后成功之后,查出他这个权列表啊,这是第一部分,但是这个查问过程中他不能进行操作,因为没有做这个授权,然后这做完之后怎么做呢?咱们第第二步把这个值放到write中,Key是用户名value式权限列表,然后第三步返回根据用户名生成的token,把token还是放到cookie,包括放到hier中,这是第四步,然后第五步这过程都交给so做这个授权操作,然后他怎么做到the里边,先从header中取到token值,根据token得到用户名,拿着用户名查RA,把权列表得到,得到之后最终再给你的用户赋予这些权限,就给用户做个授权,然后你的用户才能做操作,也就是说最终都是由做这授权。
20:54
他只有授权之后用户仓操作,如果他不授权,就算你用户查出这个权列表,他也不能进行访问啊,这些都是交给so做到的,所以这个啊,是咱们画的这么一个基本流程啊,也就是说刚才我那个。
21:10
文字的描述就是咱们的这段话。所以大家啊,把这个给他好好去记记啊,就是关于如果咱要做认证授权,它里边这么一个。基本过程。这个啊,我们就做了一个说明啊,我把这个图给大家先保存一下啊。这是。我们的。第一张图。Security。他这个授权的一个过程。这个啊,我们就说完了啊,也就是说这段话给大家做一个解释啊,所以现在咱就把这个它这个基本的过程我们就说完了啊,各位把这个过程给他要知道啊,也就是这张图这个效果啊,我就把。
22:02
呃,这个图给大家啊,简单截一下啊。解到我这个底中来啊。就是这部分啊,我想这个位置。这个啊,所以咱们啊,现在把这个介绍我们就最终说完了啊。所以各位把这些理论知识给他好好去理解,因为你在面试中给面试官回答的就是回答这些东西,这个啊,咱们完成啊。
我来说两句