菜单权限,按钮权限的设计及实现

Posted for-easy-fast

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜单权限,按钮权限的设计及实现相关的知识,希望对你有一定的参考价值。

最近,公司老大给了这个任务,功能差不多完成了,现将一些经过分享给大家!

------------------开始设计时-----------------

  1. 菜单权限的设计

         思路:

  1. 5个表的建立:用户表、角色表、菜单表、用户角色表、角色菜单表
  2. 后台动态加载json数据给前台。   这里的json数据,就是菜单栏的数据(就是通过后台数据查询找出当前用户拥有哪些菜单)
  3. 用户(操作员、管理员、超级管理员)只能看到自己对应的菜单数据

          思路:sql语句加上对应的where条件 ,来对查询到的所有数据做进一步的筛选。

 

       实现步骤:

  1. 设计表结构,
  2. 依次往菜单表、角色表、用户表中加入数据,
  3. 根据页面需要的数据,设计webapi接口方法,
  4. 通过网页操作将数据加入角色菜单 rel_rolemenu、用户角色rel_userrole的关系表中

 

 

-----------------------功能完成后的表-------------------------------

用户表

技术图片

角色表

技术图片

 

 

 菜单表

技术图片

 

 

 

 关系表  

技术图片技术图片

 

 -------------------------开发过程中发现的问题------------------------------

1.  返回当前用户的菜单按钮数据

A方式   通过关系表查询 , 这种方式查询不方便 (如果用EF的导航属性的话,实现起来还是相对简洁些的) ,但是做数据修改的时候很方便 ,可以直接对关系表做操作。

B方式   通过存储的MenuIds去菜单表中做查询,这种方式查看查询方便,但是修改不方便,需要 在 用户更新角色数据、角色更新权限数据、权限数据更新时,去更新用户表里面的MenuIds值 很是繁琐

 

我采用的方式:由于个人比较懒,喜欢数据能够直观些,就把2种方式都采纳了!   但是个人建议,还是用第一种方式,不要弄复杂了,功能能实现就行!

 

2. 菜单表父子结构的数据

A方式     直接将表数据交给前端人员处理成树形结构

B方式     自己在后端处理这些数据,然后将处理的树形结构数据返回给前端人员,具体实现方法,我将在我的下一篇博客里写出来

 

以上是关于菜单权限,按钮权限的设计及实现的主要内容,如果未能解决你的问题,请参考以下文章

RABC权限控制(二级菜单实现)

关于java web分配权限,有用户表,祖表,角色表,菜单,按钮 求权限的分配,希望各位大侠的指点

非常叼的工单系统,工单结束,工作完成;非常叼的权限管控,精细到页面按钮及API

java web开发多用户博客系统,用户权限控制该怎么实现?

VUE3 你不知道的按钮与菜单权限

一个简单的实现不同权限的用户登录后看到不同的菜单设计的数据库表清单