00:00
我们把用户维护,角色维护,许可维护的功能我们已经做完了,那接下来我们就该把权限应用到我们菜单上面了,也就意味着当我们的用户登录之后,他应该根据我的权限来显示不同的菜单啊,这个我们现在来做一下,嗯呃,那么我们现在啊,找到我们的登录功能就意味着呀,在登录之后,我们应该把我们的权限给他加上啊,那么在这里呢,我们来看一看,当我们的登录成功之后,那接下来我们要做的事情呢,其实就是把它的权限给他取到。所以这里我们写上啊,叫获取。呃,用户啊,权限信息啊,那我们这里呢,其实获取的这个信息啊,咱们比较简单啊,直接取所有的许可就行了,所以呢,写上咱们叫pro啊,咱们叫promi,嗯,Promi service写完以后,那给它加上,嗯。
01:17
你的目的就是为了取许可信息啊,所以我们直接来,我们点咱们叫query啊,但是我们这里啊,并不是说全部给它取出来,而是把我当前登录的用户,它所对应的权限取出来,所以我们叫query permissions,咱们叫做for,咱们叫。啊,是为了把用户的权限给它取出来啊,或者说叫也可以啊,叫BY通过用户把权限取出来,所以把那个DB给它传进去啊,传进去以后我们返回的就是我们的permi,把我们的permis给它拿到啊好,假设我们现在已经拿到了我们的权限,那这个时候我们需要把他们的关系组合好,所以map啊,之前咱们讲过了,咱们这里会有个map来组合他们的上下级的关系,Permission啊,然后permission map等于new哈西map,嗯,然后呢,接下来in我们的promis啊好了,写完之后promis,我们这里呢,给它包,嗯,导包以后for循环,然后呢,这里来permis permis啊,然后冒号permis,嗯,行,把每一个。
02:41
的promis都放到我们的map当中啊,咱们的promiss.id然后啊,Promiss就可以了啊,行,呃,写完以后,接下来我们再来循我们的for循环,然后我们的permiss permiss好冒号permiss啊,那这个时候我把每一个permission啊,我们它都当成child等于permission,嗯,好了。
03:12
那么写完了以后,那我们说呀,它里面一定会有我们的附菜单。而且呢,那个跟菜单只有一个啊,所以我在上面呢,给它准备一个,咱们叫promis啊,咱们叫promi,给它个root,等于now啊,我们说根只有一个,那什么时候是根呢?来if,如果我们的表get PID,它等于零,那你就是根菜单,所以就等于permi,我们的根只有一个,然后else,嗯,好了,那么else的话就意味着我们要去找到我们的了,等于啊,我们的promi,我们的child.pi那这样的话呢,我们的就来了,嗯。
04:09
那么取过来以后,接下来我们要组合他们的关系,点get children,点增加我们的child啊好,那么增加完成以后,现在呢,我们的关系就组合好了,那么我们的root顶级节点也有了,接下来把它保存起来啊,我们叫做点site attribute,咱们就叫root permi啊,顶级的那个节点,然后呢,我们叫rootte,嗯,好,可以了,嗯,写完以后就剩下它了,根据用户来查询许可,所以点击create,嗯。点击完成以后,来在他这边我们给它增加点击增加,嗯,增加完成以后来promi door.chry然后把它拿过来。
05:03
拷贝啊给它放过来,然后DB啊把这个呢去掉,去掉以后点击小灯泡啊给它来,嗯,创建创建以后,那我这里呢,直接拷贝啊,拷贝到我们的映射文件当中,Promis啊,咱们打开啊select。好,查询结果呢,是然后把它对应的那个对象给他拿过来啊,咱们的对象来拷贝。拷贝以后,那这里呢,就应该是那个permission了啊,Permission好,我们来看一看,没问题啊,写完之后,那接下来我们这里写上select啊,然后呢星from,你的目的就是为了查许可,就是为了查权限,所以我们来查询promo,但是你可不是全查呀,你查询它应该是在某一个范围当中,什么范围啊,就是说你对应的角色的许可的合集,所以我应该从关系表当中来,我们写上叫做in,它应该是个范围,这个范围应该是select,然后呢,我们叫promi ID,然后从我们的关系表当中来,把它找到什么关系表,角色和权限的关系表。
06:26
那你根据什么来查呢?根据我的角色ID啊,因为你的角色ID它在某个范围当中,你对应的许可我们就能拿到,那你的这个角色在哪个范围当中呢?我们再来in,那这也是个范围,所以select,那咱们写上叫ID,然后from,那么这个时候就要看用户和角色的关系了,所以u where,咱们叫UID。而这个UID我们恰恰是能够传过来的,因为在我程序当中,我们这里传的是我们的DBU,那它里面就会有用户的ID,所以我写个ID就可以了啊好了,那么也就意味着我通过关系表的数据就能够找到我们权限的信息,来,我试一试拷贝。
07:20
拷贝以后,在我们的数据库当中,我们来观察一下,来点击打开,点击之后点击我们的它,然后呢,我们去查一下啊。来查完以后,那咱们这个ID啊,可以给他固定先写死了,嗯,咱们这个UI,那么就是张三嘛,那那么张三的权限是我们的一,那么它的权限都有什么呢?来运行。运行以后诶没有分配是吧,那我来再确认一下咱们的U肉一是角色三。那这个哦,就是那我得写个三呢,嗯,好,然后诶把关系准备好来吧,我们这里给他来执行,执行以后大家可以看到没有任何的问题,我们这边已经是对的了啊,所以我现在这一块是没有问题的,好,那既然没有问题的话,我们现在的数据就拿到了,并且我保存到了session当中,你保存到了session当中,那么我们所有的菜单页面,它都能够访问相同的菜单,所以我们的菜单我们应该把它独立出来,因为每个页面都一样,它既然都一样,我没有必要把它写到我们的这个位置。
08:38
所以啊,把它的菜单ul啊,我们给它拿出来啊,给它提出来,提出来以后我放到一个共通的页面当中,我们new创建一个文件夹叫common,然后我们写上一个叫menu啊,以后呢,我们共同的文件就放到里面去。
09:01
咱们叫new啊,然后呢叫menu.gst好,间括号百分号,然后圈page,它等于UTF杠八,然后呢拷贝,拷贝以后这就是我们共同的文件内容,接下来当你用到的时候,你需要在我们这里引用一下,所以间括号百分号圈A,我们叫include,给它包进来,那么包进来的时候我们写上叫fell啊,咱们叫。然后我以斜杠开头,那么Y方info斜杠啊,我们叫JSP,然后common,然后呢,menu.jsp我们这么写就可以了啊,写完以后,那在我这个页面当中,我们每一个节点就是一个菜单,所以我要循环便利,那么我这里呢,来哦,我的循环便利再加个C标签啊先括号。
10:01
百分号,然后我们的我们C啊,我们这里写上啊。写完以后间括号C啊,我们叫for it循环遍历,那我循环的是什么呀?我们这里aem,我要循环的是根节点下面的子节点,因为根节点我们是不显示出来的,所以root我们叫permision DR我们叫children,那这样的话,这是个集合,它就能够循环了,而我们这里是root permis,那所以我这是没有问题的啊,然后我把每一个循环的对象表示为我们的promis就可以了啊,然后那我的循环便利了,但是我们这个循环历啊,有点问题,为什么?因为它里面有Li,还有的Li里面有u Li,那这个我们该如何来区分呢?很简单,如果你当前的节点有子节点,那么里面就带ul,如果没有子节点就什么都不带就可以了,所以啊。
11:11
我们在这里可以判断一下C冒号if啊,咱们做一个简单的判断,咱们叫test,嗯,然后Dollar符啊,我们判断一下叫empty,咱们写上叫permission。如果你的节点有子节点,而且它为空的情况下,那说明我们就应该是这么写了啊,把它放过来。那但是我们说了,你万一你要是说不为空呢,那你不为空,我们写上C冒号if啊,那这个时候我们就叫not empty了,Not empty,然后pro点我们的啊,所以我们写上啊咱们的就可以了,嗯。写完以后,那不就是我们的Li了吗,所以把这个我们放过来啊,好,那行,我们现在给他放过来,放到这儿,那么其他的我们暂时就不要了,嗯。
12:12
好,把这个去掉啊,这是我们的ul,嗯。好了,那我写完了以后,现在呢,我们准备啊,把里面的元素我们做一做,那这个呢,应该是我们的什么呢?来写上,应该是我们当前循环的promis,它的URL链接地址,但是我们说了所有的路径前面咱们都加上APP pass啊好,那这个ul我们应该写什么呢?我们看一看。我们数据库当中,我们的控制面板你可以先不写啊,那么权限管理可以先不写,但是下面你得写啥了,斜杠我们叫U,我们叫index,然后角色啊,我们斜杠叫做我们叫index,还有许可叫斜杠pro,我们叫index,诶咱们这么写完了以后,咱们的路径就都有了,都有了以后,那我就可以直接把它放到这里,而且不需要加斜杠啊。
13:13
好了,接下来这个呢,是我们的图标,这个图标呢,我们可以直接拷贝一下啊,咱们试一试,控制面板咱们就放到这里,小图标给它放到这儿啊好。呃,然后权限管理,那这个呢,我们就给它放过来了啊来给它放过来,权限管理咱们放到这儿,嗯,这是它的小图标,然后还有用户啊,用户呢,就叫U,诶拿过来,嗯。好,翻过来。接下来是我们的角色啊,角色可以的拷贝。然后是我们的许可维护。好啊,给它放过来行了,那基本的这个数据啊,我们就都有了,都有了之后,接下来我们在这里把它变一变,因为我们的图标应该从后台动态取得,叫promis表E啊,然后呢,这个位置我们给它写上叫做promis name啊好写完之后,接下来那下面的这个地方Li,我们下面有ul,可能就要循环便利了,但是我们首先还是先把这些图标先给它准备好啊来。
14:28
那我们叫permission,点我们的icon小图标,那这个呢,就是我们的Dollar符,我们叫permission啊,点name就可以了,那接下来我们下面我们就应该循环遍历冒号for it,嗯,写完以后,同样我们的啊,我们写上你不就是判断它的promi的那个子节点不为空吗?所以我循环的就是它的子节点,然后我们的嗯,V2,然后呢,我们叫child啊好,写完之后把它拿过来,嗯嗯,跑哪去了?
15:09
呃,我们的这个给它来啊,剪切过来,嗯。好,剪切过来以后,下面的这个位置咱们不要啊,不要之后,那首先这个地方肯定就不对了,去掉咱们Dollar符啊,咱们叫点。And you are。还有我们的这个图标啊,来写上Dollar符,然后我们的Q的点我们的E图标。那这个就是它的名称了啊child,嗯。嗯,Child name啊,前面写错了啊,来,我们写成叫child,嗯。还有一个就是我子节点的数量,这个子节点数量怎么取呢?我们写上咱们叫做Q的点,它的子节点,它的子节点来看看啊,嗯,咱们这里啊,应该是它啊,来拷贝应该是它。
16:10
把这个拿过来,由于它是一个集合,它里面会有一个S的方法,所以我们这么写就可以了啊。好了,那我现在写完以后啊,把咱们当前我看看啊,这不对啊,这写错了,这个颜色标识的不对。把这个呢,给它放到后面去啊,好了,行了,写完之后我们来验证验证吧,看看我们数据库当中的数据对还是不对啊来我们确认一下,嗯。我这里面是123456啊,然后呢,我们这里是1345,来看一看1345啊,那这样吧,我改一改啊,咱们叫五和六吧,别四和五了,咱们叫五和六,嗯,好,那我现在我的权限就是1356了,它是UID是三,就意味着是我们当前的程序员,那么我们的U里面当前的三它就是个程序员,那这样的话,它的权限就有了,所以我们现在把它来展示一下,看看我们的数据对还是不对啊,来点一下。
17:16
把这个停掉。听完以后给它来启动一下。好了,那现在的这个服务器启动完了,我们现在呢,准备来后退,我们来看一看刷新,然后我们的张三下来,张三我点击登录之后,数据库当中的权限,我分配的是什么,它就有什么,所以点击登录点。点完以后大家观察一下对不对,权限管理里面有角色和许可,有那个用户吗?没有,那么当前节点下面有两个子节点,这个地方是二,说明它都是对的,所以啊,我们现在把菜单已经动态的取得,这就是我们BAC的权限模型,咱们已经做完了。
我来说两句