00:00
各位同学大家好,在前面内容中呢,咱们实现了权限管理的相关功能,用户登录之后可以访问它具有操作权限的按钮以及菜单,但是咱们前面做的呢,只对前端做了菜单和按钮的控制,我们后端服务端并没有加任何控制,什么意思呢?给大家说明啊,比如说我现在我用李四登录了,咱们之前加过这个用户分配过菜单,现在我登录。然后登录之后大家看啊,李四可以操作菜单,有用户管理,有角色管理,然后在角色管理中,他对于添加没有操作权限,这是我们在前端做的控制,但是服务端没有做任何控制,比如说现在啊,我做这么一个事情,咱们在里边啊找到一个接口,大家看这个接口。这是什么me,是不是菜单,就说我现在其实这个李四呢,对菜单他没有操作的权限,但是我现在我怎么做,我绕过前端直接访问我这个接口,咱看他会怎么样啊,比如现在我访问我这个菜单列表接口,因为它是get提交咱们直接访问。
01:13
我在这里边问一下啊。Local house的。8800加上地址。然后加上菜单列表,这个接口的方法名字叫find nots,我们给它加上,然后咱们回车,大家看啊,我现在是不是能访问到,比如说现在我们只是前端都是控制,如果说你绕过前端直接访问后端接口,这里边没有做任何控制,所以这个肯定是不对的,咱们需要在前端做控制,在后端一样做控制,比如说李次进入到我们这个系统中,他能看到用户管理角色管理,而别的菜单他没有权限,这个时候我想访问其他的接口应该是提示我们没有权限,或者说什么都不经返回,所以现在啊,咱就在这个服务端要加一个权限的控制。
02:08
我不知道我是否说清楚了啊,再解释一遍,说的简单点,我现在绕过前端页面直接访问后端接口,这个接口部分咱们没有加权限控制,所以现在做的就是对于接口访问这个部分端加权限控制,用户有权限能访问,没有权限那他就不能访问,那这个怎么加,咱们做一个简单说明啊,如果说啊,我们用最原生的方式,那怎么做?比如说我们现在每次访问到一个CTRL方法中,在方法中咱们是不是加上一个if判断呀,我就写个伪代码,比如说判断,大家想一下判断什么,首先判断当前用户是否已经登录了,如果说你没有登录肯定不能访问,如果他已经登录的话,咱要判断当前用户对这个功能有没有操作权限,没有操作权限提示他不能访问,有操作权限是不是在往下进行。
03:09
所以原生方式咱们需要在每个方法中加上判断实现,这各位要明确啊,但是这么写肯定很不方便,因为这么写的话,每个里边是不是都需要加值判断,那大家想一下我们可以怎么完善?各位想怎么完善?咱们在Java web中有一个技术叫filter,就是咱们说的过滤器,我们通过过滤器是通过过滤器,在过滤器里边呢拦截到你的请求,然后在里边做判断,而过滤器在用的过程中,咱们还可以加上另外一个技术叫a up。这各位应该明确啊,A是什么呢?就是咱们说的切面编程,通过它可以实现改变,然后增加功能,咱就给它增加这个权限的控制,这是我们最原生的方式,我再重复一遍啊,如果说在务端加上权限控制,咱们第一种方式可以在每个方法中加上一个异付判断,这么做完全可以判断它是否登录,登录之后判断有没有对当前功能的操作权,然后第二种方式,咱可以对它做优化,基于过滤器filter加上A进行实,这么做完全可以做到,但是实际中呢,咱为了操作更加方便,也就是说一些基础的结构我们不想去编写,我们只想关注到核心的业务中去,那这个时候呢,我们就可以找一些现成的开源框架进行实现,而我们现在做这个权限控制。在实际中有很多。
04:45
框架可供我们选择,比较常见,我这里列出来了,大家第一个是第二个,这两个都是比较常见的权限控框架,框架我们之前提到过啊,这里再重复一遍,大家理解一下什么叫框架。
05:06
各位可以这么理解啊,框架呢,帮我们实现了一个最基础的功能,把它的基础架构都搭建好了,然后在框架中约定一种规范,咱们用这种规范仅开发,只关注里边的核心部分,这个叫框架,也就说框架给我们实现了一部分功能,咱们可以手写代码。另外框架规范了你的开发的规范,开发的过程,根据框架能够更方便的实现我们的功能,所以咱们现在在服务端做权限控制,我们就基于这个框架进行实现。以上啊是咱们对于这个背景的说明,服务端加权限控制,我们项目中呢,基于这个框架security进行权限控制是一个介绍,然后这个之后咱们继续来看啊,关于这个我们做个介绍,然后咱们用它进行权限控制。
06:03
大家看一下啊,首先死人框架这各位都很明确啊,是一个极其流行的开源框架,也是一个功能极其强大框架,在家族中的有很多相关的这个组件或者框架,其中这个security就是家族中的一个重要的成员,它作用是什么呢?我这里写到啊,提供了一套web应用安全性的完整解决方案,就是它能做到我们说的权限控制。然后这个框架中呢,其实它主要有两大功能,我这里列出来啊,第一个功能叫用户认证,第二个功能叫用户授权,也是它的重要的核心部分。那什么叫认证,什么叫授权?给各位先做个说明,然后咱们一会儿具体用框架进行整合,咱们看第一个啊,就是用户认证,我这里列了一段话,我们先读一遍,然后给大家解释一下啊,什么叫认证呢?我们理解为验证某个用户是否为系统中的合法主体,也就是我们说的用户能否访问这个系统。认证过程中一般需要用到用户名和密码完成认证过程。说到通俗点啊,用户认证就是判断用户能否正常登录,根据用户名和密码请判断,就是咱通俗说的登录。
07:26
第二个叫授权,什么叫授权呢?它指的是验证某个用户是否有权限执行某个操作,因为不同用户有不同的权限,比如说某个用户对文件可能只能读,这个用户对文件可能可以修改,所以每个用户有不同权限通过这个授权进行验证。说的简单点啊,比如现在我的用户是李四,那李四在访问过程中,我们可以验证他对用户管理能不能操作,对角色管理能不能操作,如果能操作进行显示,比如说他现在对菜单不能操作,当他访问的时候可以提示说你没有操作权限,这个就叫用户授权。
08:11
我再解释一遍啊,Security是家族中一个重要的成员,它能实现用户认证和用户授权。用户认证是什么呢?就是我们通俗说的用户能否进行登录。用户授权指的是用户是否是有权限做某个操作,比如这个用户能否进行添加,用户能否进行菜单列表,能否进行菜单删除,通过它进行授权。这是它的两大功能,而用这个框架,它里边把一些基础架构部分给咱们都写好了,咱们只需要关注里边的核心部分就可以了。另外他预定了一种开发中的规范。这是关于它的一个基本说明,那咱们继续来看啊,Supreme security是一个权限控制框架,另外还框架,这个框架叫咱们把两框架做一个简单的比较,首先啊看security。
09:11
这个框架呢,可以说功能是极其强大的,里边有很强大功能,能够进行全面的权限控制,它这个框架啊,基于我们的web模块进行安全控制框架。而这个框架呢,但是它有一个特点,它是一个重量级框架,因为它要依赖很多其他组件才能实现。而spring security我强调啊,它出现的时间其实是很早的,但是它出现之后呢,一直没有被用起来,就用的人很少,为什么很少?因为最开始它用起来会特别的不方便,需要做很多的配置,很多的处理,用起来会特别的麻烦。但是随着spring boot的出现,这个security在慢慢被用起来,因为它的功能的确极其强大,所以咱们现在项目中基于spring security进行全控制,另外还框架叫筛,这个筛肉呢是一个轻量级框架,在实际中用的也比较多,但是功能上并没有security强大,而实际中一般来讲一些基础的圈控制,其实用筛已经足够了,咱们项目中为了我们学的更多,所以咱们还是用这个CQ进行实现,当然用也完全可以做到我们项目中这个功能。
10:30
啊,所以以上是关于security一个基本的概述,咱们再重复一遍啊,我们现在在服务端没有做任何的权限控制,所以咱要加上这个控制,控制的话呢,如果用原生方式,咱们可以用filter加A进行实现,但是现在呢,我们不想关注一些基础的架构,只想把我们的核心放到核心的功能实验中去,所以我们用一些框架进行实现,框架有很多,我们基于这个security实现,Spring security里边有两大核心部分,一个是用户认证,就是咱们通说的登录,一个是用户授权,就是判断用户能否做某些事情,比如用户能否做添加,能否做修改。而spring security是一个功能极其强大框架,在spring boot出现之后,它的用又变得特别的简单,特别的方便,它的功能比筛更加的强大,我们项目中。
11:31
基于它进行实现。以上是一个总体的一个概述。
我来说两句