我所理解的权限

一直想找个时间自己写个DEMO,因为看了不少这方面的资料,大致思路都应该清楚了,想自己动手写写应该更容易理解,同时也能找出自己那里还没有理解透彻,所以礼拜六、天就动手写了个DEMO。

 

第一步:定义系统权限。

我所理解的权限_第1张图片

第二步:添加导航菜单

我所理解的权限_第2张图片

在添加导航的时候,同时需要选择该菜单所拥有的权限。

我所理解的权限_第3张图片

这里的所属权限,用一个字段保存,后面给角色赋值权限展示列表的时候,用来比对是否显示。

第三步:新增角色,给角色赋值相应的权限,还可以直接关联到用户(用户管理就不介绍了)。

我所理解的权限_第4张图片

设置权限

我所理解的权限_第5张图片

这里每个菜单所对应的权限是通过第二步中,新增导航菜单的时候保存到数据库的。

这里显示的时候:获取权限列表跟导航表中的数据比对一下,有就现实无则不现实,这样就可以动态的控制每个导航的权限了。

 

 

我把自己大致的思路描述下,还望各位指正。

数据库设计:用户表、用户角色表、角色表、角色权限表、权限表(很传统的权限设计)。

1、把系统中会涉及到的所有功能权限,全部存到“权限表”并且用一个代码标识。

我所理解的权限_第6张图片

2、例举出系统中全部的功能菜单,同时也需要用一个代码来标识这个菜单。具体权限为“菜单代码—权限代码”(当然这是我自己这样设计的,也许不得当,但是我自己是这样理解滴)。

当然这里还要标识这个菜单拥有哪些权限,譬如:增加、删除等等,默认权限为增、删、改、差。这里的“Lauthority”字段保存的是权限拼接的字符串,用逗号隔开

我所理解的权限_第7张图片

 

 

 

 

 

 

 

3、功能与角色的关联。

创建角色表,添加角色(这里不做介绍);然后是“设置权限”,选择权限设置页面上面有图,很简单新增的时候判断页面哪些复选框勾选了,把勾选的值拼接起来,然后和角色ID一起存入“角色权限表”(我直接把已经拼接好的权限保存到checkbox的value中,保存到数据库的时候直接判断页面上的checkbox是否选择,然后拼接直接保存数据库)。

 

我所理解的权限_第8张图片

4、给用户赋值角色。

建立好用户信息,然后用checkbox来展示角色,同理在checkbox的value中存入角色的ID值。然后把用户ID和角色ID同时存入“用户角色表”

我所理解的权限_第9张图片

这里的对应关系是一对多的关系即一个用户可以同时拥有多个角色(同理一个角色同时可以拥有多个权限)。

5、使用。

登录的时候,可以获取到用户ID,通过用户ID可以找到用户所属的权限,然后找出权限所拥有的功能,动态拼接成字符串。

 在进行操作的时候进行判断是否拥有该权限。

我所理解的权限_第10张图片

页面判断。

 

至此,我自己所理解的权限管理就做出来了。以前都是个人意见,各位如果有好的想法或者发现错误,还望指正。

你可能感兴趣的:(权限)