基于角色的菜单按钮权限的设计及实现

最近,公司老大给了这个任务,功能差很少完成了,现将一些通过分享给你们!前端

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

  1. 菜单权限的设计

         思路:sql

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

          思路:sql语句加上对应的where条件 ,来对查询到的全部数据作进一步的筛选。json

 

       实现步骤:后端

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

 

 

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

用户表spa

角色表设计

 

 

 菜单表blog

 

 

 

 关系表  接口

 

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

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

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

B方式   经过存储的MenuIds去菜单表中作查询,这种方式查看查询方便,可是修改不方便,须要 在 用户更新角色数据、角色更新权限数据、权限数据更新时,去更新用户表里面的MenuIds值 非常繁琐

 

我采用的方式:因为我的比较懒,喜欢数据可以直观些,也不太知道哪一种方式好,就把2种方式都用了!   可是我的建议,仍是用第一种方式,不要弄复杂了,功能能实现就行!

过后分析总结: A方式  在表里就不须要加MenuIds、RoleIds字段来处理,直接经过 用户角色列表,操做关系表 rel_userRole、rel_roleMenu表来处理,因为咱们现有公司该表没有作软删除的设计,还须要在删除 单条menuId、roleId值时,去这些关系表里删除对应的记录

                          B方式  实际上就不须要建关系表了, 而要加上MenuIds、RoleIds字段值,而后经过这些MenuIds、RoleIds去Menu表、Role表中找出对应的记录就能够了。 在进行menu表、role表数据进行更新时要找出它所影响的 用户数据、角色数据是哪些、而后更新这些数据的MenuIds、RoleIds值

 

 

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

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

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

相关文章
相关标签/搜索