00:00
主页面我们现在已经展现出来了,那我们接下来做什么呢?我们接下来要讲一下权限。在后台管理当中,我们的权限是非常重要的,那什么是权限呢?我们说呀,所谓的权限其实就是用户登录之后,他的权利和他的限制。因为我登录之后,哪些功能我可以访问,这是我的权利,那哪些功能我不能访问,这是我的限制,这就是所谓的权限。那么后台管理系统当中,你的用户哪些能做,哪些不能做,这是非常重要的,因为有些功能不能全都能做,有些功能就是管理员才能做,你其他人不让你做,那有些功能呢,就是我们的项目经理呀,或者我们的软件工程师呀,他们能做,但是系统管理员就不能做了。所以说每个人的权利是不一样的,他受到的限制也是不一样的,这是我们的权限的范畴,非常的重要,那既然我们要做这个非常重要的功能,可是我们从来没有接触过,那我们怎么做呢?
01:14
我们说呀,咱们最擅长的就是照猫画虎,你不会做没关系。给你一个例子,给你个DEMO,你参考一下,我相信就能做的出来。所以啊,我们接下来给大家介绍一个模型,这个模型叫权限模型,你把这个模型搞明白了,你照猫画虎不就会弱了吗?所以我们接下来打开这个问。文件,我们叫RBAC权限模型。这是一种特殊的模型,它跟权限相关,你把它搞明白以后,那么做我们的权限就非常的容易了,所以我们一块儿来看一看它是如何来说明的。
02:01
首先,权限管理,这是每个软件系统都会涉及到的,而且权限管理的需求本质往往都是一样的,不同的角色拥有不同的权限,只要你充当了某个角色,你就拥有了相对应的功能。这就是权限的概念,那么我们这里有一个叫RBAC,它是几个单词的缩写,它是基于角色的访问控制,这里是个角色。那有的同学说,老师这不叫角色吗?对不对,我告诉你这个你还真别念错了,那么我们这个位置,大家看一下我们的角色,你写写试试。你会发现,当你写完之后,它会自动把它纠正为叫角色。诶,这个事儿你要知道,它就叫角色,它不叫角色,所以说我们是基于角色的访问控制,他说就是用户通过角色与权限进行关联,简单的说,一个用户拥有了若个角色,每一个角色拥有若干个权限,这样的话就构造成用户角色权限的授权模型,在这种模型当中,用户和角色,角色和权限之间形成多对多的关系。
03:25
诶,这里提到了一个概念,叫多对多,那么什么是多对多呢?首先我们需要先搞明白其他的那种关系,比方说我们比较了解的是一对多。啊一对多,然后呢,或者呢是多对一,诶这个我们平时可能啊接触的比较多。比方说一对多吧,那一对多,那么一对多,诶一个我们的。教师。啊,一个我们的教室啊,啊,咱们叫教室,它里面会有多个学生啊,多个学生,诶就是这样的,还有多个学生在一个教室当中,哎,多个啊,我们写上。
04:09
多个学生,那么在一个教室当中啊,一个我们的教室,诶好了,这就是一对多和多对一,可是你的概念我们明白,那我们在做设计的时候,你这个表该如何设计呢?你的类该如何设计呢?我们一块儿来看一看。首先第一个。我们的一对多,他表述的是一个教室和多个学生,那我首先就得有两张表,一个是我们的教室,一个是我们的学生,所以啊,我写上咱们叫T下划线,我们就叫做home吧,那诶home去了啊,我们叫house。呃,或者呢,我们叫班级也行啊,也不叫教师叫班级吧,一个班级是吧,也可以咱们叫class啊,咱们的班级,那班级的话有主建,然后呢,有班级名称,OK。
05:10
写完以后,那我现在写个一啊,比方说我们的一年一班,哎,好二,然后呢是一年二班,嗯,赢了。那还有个31年三班,嗯,三条数据够了。那班级有了,那么我们的学生呢,叫T_student,那我们的学生表,那学生表的话,它有ID,还有学生的名称,OK,然后我们也增加三条数据来写个一,然后呢,我们写上张三,二写上李四。好三,我们写上王五好了,写完之后,张三李四王五我们现在就都知道了,可是他们都在什么班里面呢?我们一块儿看一看,也就意味着现在一个班级里面可能会有多个学生,那么他们两张表就要建立关联了。
06:08
那这个关联我们该如何建立呢?由于啊,我们的班级和学生他形成了一对多的关系,所以我们一般情况下是在多的一方来建立关系会更加的容易。所以我们要在多的一方的表当中增加我们的外键来关联我们一的那一方的表,所以在多的一方是student,在它里面我要增加一个班级的外建来关联班级,所以我们叫class ID。他是个外线,但是呢太长了,我简化一下叫cid,那么这个cid就关联到我的班级了,那么我的班级,比方说我的张三和李四,他都在一年一班怎么办?那这个CAD就应该写上一,那么李四应该也写上一,而王五呢,可能在一年二班,所以他就写上个二就可以了。
07:07
所以说你会发现,从我们数据的角度,一个班级里面确实他有多个学生,这不就是一对多吗?所以啊,一对多我们用一个外键就可以了,那反过来讲多对一呢。多对一的表的设计,大家想一想,是不是还是这么设计啊?诶,还是这么设计,为什么?因为多个学生在一个班级里面能不能体会体会出来也可以吧。所以其实不管是一对多还是多对一,他们所涉及的对象是完全相同的,只不过站在不同的角度来看待问题。好了,这个咱们说完了,咱们接下来说一下多对多。什么叫做多对?那么多对多,其实你可以这样理解,它是双向的一对多。
08:07
双向的一对多,我们就称之为叫多对多。诶老师,那我们之前不是有一对多吗?可是我们之前的一对多他可不是双向的,他是单向的,因为一个班级里面有多个学生,这不就是一对多吗?但你反过来,你能说一个学生在多个班级里面吗?这个应该不太可能。一个学生同时在好几个班里面,哎,这不可能,他又在一年一班,又带一年二班,这是一般不可能的,所以啊,他是个单向的操作,但是我们这里就要说一下双向的一对多了,那咱们以什么为例呢?咱们以学生和课程为例。
09:00
那学生和课程他怎么就是双向的一对多了呢?来,我们站在学生的角度,你站在他的角度,一个学生。可不可能选修多门课程?可能吧,那所以说这就是一对多,那好,你再反过来站在课程的角度,一门课程可不可能被多个学生选修啊,是不是也有可能?也有,那所以说他们站在双方,他其实都是一对多,这种关系我们称之为叫多对多。好了,概念明白了,那我们如何来建立表呢?首先我们依然有两张表叫T,咱们叫做student。好,那我写完之后,同样有个ID,有个name。好了,写完以后,那么我们现在写上一,然后写上张三。
10:01
二写上李四。三我们写上王五,那学生有了再来我们的课程,咱们叫cos。然后也有ID啊,课程也有名称,好我们来,那么这里给他个一,然后写上我们叫语文啊,嗯,二我们写上叫数学。然后三我们叫化学,嗯,好了,那我现在写完了以后,我们的两张表就都有了,那行老师你不说了嘛,他不是一对多嘛,咱们之前那个学生和班级不是有外建吗?多的一方的外建可以关联我们的一的那一方的主见,那所以我们站在他的角度,如果他是一对多的话,那么这就是多。一个学生选修多门课程,那课程就是多,那我是不是应该在课程的这边增加我们学生的外建呢?OK,我写上ID,那我们就写上我们的张三他学习了语文,同样他也学习了数学,李四他学了化学,那这样的话不就是我们。
11:13
一个学生学了多门课程,这不对着呢吗?好,反过来,我们站在课程的角度,一门课程可能被多个。学生选修,那他就是多,那我们是不是在他的这个位置,我们增加我们课程的外键叫cid呢,我们来看看,那我说了一门课程可能是多个学生选修的,那所以一就是语文,那么李四有可能也学语文了呀,那么王五学的是数学,诶我们这么写不也行吗?所以是不是我们这么写完以后,就是双向的一对多,就是多对多了呢?我们说不是,这是有问题的,问题在哪儿了呢?咱们刚才说过了,我们的张三是不是又学语文,又学数学了,但是你从这条数据当中,你能看得出来吗?
12:08
你看不出来是吗?为什么看不出来,因为从数据的角度,你张三学的课程是不是只学了一个呀,我没有看到多个,我只看到了一个对吗?那你这能叫一对多吗?诶老师那简单呢,我就写个二。那你一是语文二是数学,那不就可以了吗?诶你要记住它可是外键呢,外键关联组件,组件是个自增长,它是个数字,它怎么可能会有逗号呢。所以在这种情况下是不可能出现这种数据的,所以这就意味着我们用两张表根本就实现不了多对多,所以这么写是不对的。那这么写是不对的,那我们该怎么办呢?我们这个时候就得增加一个关系表。
13:01
增加了关系表以后,那么通过关系表来建立他们的关系,就可以体现我们的多对多了。那好,我们一块儿来看一看,比方说我现在再来一张表,这个表我们叫student_course它表述的就是学生和课程之间的关系。那好,那我现在写上一个ID,它表述的是它自增长的组件,然后它要建立两者的关系,那么一个就是学生sidd,还有一个就是课程ID,叫CIID,那行,那现在我们一块来看看吧,我的自增长是一,然后sid不就是我们的学生的主见嘛,那么就是一张三,所以写个一,那么一个学生可能会选修多门课程,那么所以说他选修了语文,然后二我们写个一,因为学生没有变,可是他选修的是数学,OK,那这么写完了以后,从他的角度来讲,一个学生选修了多门课程,这是对的。
14:09
好,那我们接着再增加一条数据,那么我们再增加一条数据的话,那我的语文可不光只有张三才选修了呀,他可能李四他也选修了我们的语文,那么大家想想,站在我们课程的角度,一门课程被多个学生选修了,能不能体现出来?也能体现出来一对多的概念,所以这个关系表就体现了双向的一对多,其实就是多对多啊,好了,这个呢,我们就说到这儿,我们回过头来来看一看我们这里的。表,你会发现它里面有用户角色权限三张表来体现三个概念,这是我们权限模型当中非常重要的三个概念。但是除了这三张表以外,我们其实还有两张表,这两张表叫关系表。
15:10
啊,就是关系表,因为他们两两形成了多对多的关系,我一定要靠关系表来体现他们数据的关系。所以啊,我们的五张表就可以完成我们最基本的RBAC权限模型。诶,老师,难道权限就五张表就够了吗?不是,我们最简单的五张表就够了,但是你往下看,实际的工作当中要比我们之前说的要复杂了很多,因为我们所谓的权限有很多,比方说我们的菜单,你的菜单你能看到哪一些,你不能够看到哪一些,这是权限,那么我们页面中的按钮,哪些你能点,哪些你不能点,这也是权限当中的。还有页面中有那么多的字段,哪些你能看见,哪些你不能看见,这也是属于我们权限的一部分,所以啊,权限的范畴是非常广的,我们只能学习其中的一部分,如果把所有的东西都学到了,就有点儿长了啊,所以我们先把最基本的学明白就可以了啊。所以说你会发现真正的权限模型它是非常复杂的,它的表结构也会更多一些啊,这个咱们暂时先不考虑了,我们只要把这个图形当中的表搞明白,把他们的关系考虑明白,那就可以了。
我来说两句