为了账号安全,请及时绑定邮箱和手机立即绑定

我的第一个python web开发框架(35)——权限数据库结构设计

标签:
Python

接下来要做的是权限系统的数据库结构设计,在上一章我们了解了权限系统是通过什么来管理好权限的,我们选用其中比较常用的权限系统来实现当前项目管理要求。

  下面是我们选择的权限系统关系模型:

 https://img1.sycdn.imooc.com//5b9260dc000126d309480979.jpg

  从以上关系可以看到,用户登录成功以后,通过读取管理员账号信息获取当前管理员所在部门与职位,读取职位中的权限信息。进入系统以后,通过职位权限信息筛选出显示的菜单项;访问各功能页面并进行增删改查操作时,通过权限信息判断当前管理员是否有操作权限,从而实现对系统管理员操作权限的控制。下面分别解说一下各数据表的用途。

 

  菜单表是用来注册(绑定)菜单、管理页面和接口用的,没有将接口和菜单项添加到菜单表的话,程序是不清楚有那些菜单项和接口的,菜单项与接口之间存在什么相的关系。

  所以需要在开发时,手动将它们添加到菜单表中,才能对各功能进行对应的管理。

  在开始设计菜单表之前,大家要思考的是,我们需要存储什么信息,它们之间有什么关联,每个字段有什么用途,为什么要增加这个字段或减少这个字段?

  对于菜单表字段,多数字段大家都很容易定下来,比如说菜单名称、菜单url(绑定的html页面名称或路径)、菜单小图标(增加菜单的美观度)、上一菜单id(用于建立树级菜单目录)、排序、是否显示(对于有些页面或按键功能,不在菜单列表中显示)、是否禁用(有些功能暂时不使用时,可以将它禁用掉)。除了之些之外,我们还需要增加菜单路由地址字段,用于存储当前菜单所绑定页面所需要使用到的路由地址项,比如说编辑菜单页面,我们在开发时需要先读取这条记录出来,然后再进行编辑,最后再提交,这里就会涉及到两个路由,一个是菜单记录读取的的路由,和菜单记录修改的路由,在做权限判断时,就可以权限当前操作页面与绑定的路由地址,跟权限信息进行比较,判断是否有操作权限,具体会在后面对应章节详细说明。由于我们前端使用的是jqGrid组件的树列表功能,组件要求服务器端在返回列表时,还需要返回树列表深度、当前节点是否是最终节点、当前节点是否展开三个字段,所以需要将它们加入菜单表中。

  根据这些要求,我们的菜单表的数据结构如下

  https://img1.sycdn.imooc.com//5b9260e500014a9b10090289.jpg

  最终完成的菜单管理页面效果如下:

  https://img1.sycdn.imooc.com//5b9260eb0001770a10230471.jpg

 


  部门表它相当于权限分组,可以根据企业的部门结构,创建对应的结构记录,这样也方便企业对系统权限关系更加容易理解。当然也可以根据需要设置虚拟部门出来管理。

  对于部门表,首先它也是树状关系,所以它跟菜单表结构基本类似。

  为了以后扩展需要,需要添加部门编码字段,编码从01开始一直累加到99,当然如果部门超过99个的话,要么增加到3位数,要么当前框架已不能支持业务的发展需要思考新的架构了。

  编码每增加一级,在01后面自动增加”0x“,编码的长度跟部门分级深度相关。

  下面是部门表结构,看起来好像是在菜单表的基础上删减了很多字段得来的一样。

  https://img1.sycdn.imooc.com//5b9260f800019cf110090197.jpg

 

 

  职位表是绑定在部门下的权限角色,它直接与菜单项进行关联,不同职位可以设置不同的权限(设置可查看与操作的菜单项)

  所以职位表需要存储与部门表的关联项:部门表id、部门编码、和部门名称(直接存储这个冗余字段,是为在需要显示职位所属部门时,不需要从部门表中关联查询,因为部门名称几乎设置后就不会再进行更改了)

  另外,它还需要拥有职位名称、菜单权限两个字段

  https://img1.sycdn.imooc.com//5b9260ff0001df4d10090157.jpg

  页面效果图:

  https://img1.sycdn.imooc.com//5b92610500019e8110310376.jpg

  https://img1.sycdn.imooc.com//5b92614100017b8005000501.jpg

 

  

  而管理员账号管理,主要管理的是后台管理员登录账号与密码,管理员的基本信息,还有操作权限。

  而权限的管理只需要绑定对应的部门与职位,在用户登录时就可以通过这个绑定获取对应的操作权限。

  一般来说,管理员账号需要记录:登陆账号、登录密码、登录密钥(如果需要通过APP端登录、需要对访问链接加密或是启用cookies验证登录的,需要这个字段来存储用户自己对应的密钥)、最后登录时间、最后登录id、登录次数、注册时间等信息

  而管理员的基本信息,则是根据不同企业的管理需求不同而不同,有的将人事管理也添加到系统中,则需要记录每个员工的所有基本信息,当然常用的信息有:用户中文名称、性别、出生日期、手机号码、邮箱、备注,大家根据需要自行添加或删减。

  而用户的权限相关字段,主要是绑定部门与职位,和工作状态和账号状态它些字段了。

  具体数据结构:

  https://img1.sycdn.imooc.com//5b9261380001753d10090531.jpg

  页面效果图:

  https://img1.sycdn.imooc.com//5b926130000188dd10210221.jpg

  https://img1.sycdn.imooc.com//5b92612900017d5205990328.jpg

 

  做来管理系统,当然还需要记录管理员的所有操作记录,比如登录、退出、浏览了什么页面,操作过什么,所以还要增加一个管理员操作日志表,方便查看分析问题,分清责任

  https://img1.sycdn.imooc.com//5b9261210001ea1810090157.jpg

 

  权限管理数据表创建sql下载 (PS:为了方便操作,sql会将之前创建的manager表删除,然后重新添加admin管理员账号进去)

 

 

版权声明:本文原创发表于 博客园,作者为 AllEmpty 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

原文出处:https://www.cnblogs.com/EmptyFS/p/9520964.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消