前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >基于角色的菜单按钮权限的设计及实现

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

作者头像
明志德道
发布于 2023-10-20 11:20:49
发布于 2023-10-20 11:20:49
7510
举报

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

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

  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种方式都用了!   但是个人建议,还是用第一种方式,不要弄复杂了,功能能实现就行!

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flask学习「一」(按钮,角色,菜单,用户,权限)
很荣幸有时间能静下心来写在这篇文章,前段时间写了一些没有营养的文章对那些关注我的同学来说非常抱歉,接下来的一段日子里会围绕近期所做的Flask项目写一系列的博客,以记录自己的不足。 鉴于可能有些小白可能会看到这篇文章,于是我尽量写的通俗易懂。 接下来进入正题,我这篇文章要写的是一个系统的权限部分。权限的控制对于一个优秀的系统来说至关重要,但是对于权限的设计和把空是比较麻烦的。 一般如果我们不考虑按钮的话,逻辑大致如下: 把菜单和权限、权限用户关联起来。 1、用户页面,可以增删改查,并且还要有一个分配权限的按钮。 2、权限页面,可以增删改查,并且有一个分配用户的按钮和一个分配菜单的按钮。 3、建立两个表,分别为用户权限表(保存用户ID和权限ID)、权限菜单表(保存权限ID和菜单ID)。 4、当在用户页面中选中一个用户,点击用户的“分配权限”按钮时,打开展示所有权限的页面(并把用户ID传进去),左边展示所有还没有分配的权限列表,右边展现已经分配的权限列表,然后选择需要分配的左边权限后,点击分配,把数据分配到右边已分配的列表中,然后点击“确定”按钮,把用户ID和选择的权限ID保存到用户权限表。 5、当在权限页面选中一个权限,并点击“分配用户”时,处理方式和4相同,当选择需要分配权限的用户后,同样把用户ID和权限ID保存到用户权限表。 6、当在权限页面选中一个权限,并点击“分配菜单”时,打开一个树展现所有菜单的页面,每个树节点前面有一个复选框,并把这个权限已经分配的树默认选中,然后在要分配的菜单节点树前面的复选框上选中,最后保存数据,把权限Id和所有选中的菜单ID保存到权限菜单表。 7、当用户登陆系统的时候,首先检查用户输入的口令信息,如果口令正确,再根据用户倒查用户权限表,再通过用户权限表查到的权限,到权限菜单表查询相应的菜单,再把相应的菜单展示出来。 上面便是不考虑按钮的情况下的业务逻辑,其实加上按钮的话也是差不多的,因为按钮隶属于菜单,只有给某个用户分配了某个角色,这个用户才能在登录的时候看到他所拥有角色对应下的菜单和按钮,这样即完成了角色的权限控制。 接下来开始我们的项目。 首先根据上面的业务描述,我们大概可以用到的表和字段如下:
Python之道
2020/04/24
1.5K0
造轮子之菜单管理
前面完成了基础管理的相关API,接下来就得做一个菜单管理了,用于对接管理后台前端界面。
饭勺oO
2023/10/18
2300
手把手带你开发一套用户权限系统,精确到按钮级
在实际的软件项目开发过程中,用户权限控制可以说是所有运营系统中必不可少的一个重点功能,根据业务的复杂度,设计的时候可深可浅,但无论怎么变化,设计的思路基本都是围绕着用户、角色、菜单这三个部分展开。
潘志的技术笔记
2024/06/20
4330
手把手带你开发一套用户权限系统,精确到按钮级
五表权限_表格设置查看权限和编辑权限
设计基础:用户、角色、权限三大核心表,加上用户角色、角色权限两个映射表(用于给用户表联系上权限表)。这样就可以通过登录的用户来获取权限列表,或判断是否拥有某个权限。
全栈程序员站长
2022/11/11
3.9K0
五表权限_表格设置查看权限和编辑权限
javaweb权限管理简单实现_开源权限管理框架
注:由于该项目比较老,所以没有采用maven管理,建议下载java后台通用权限管理系统(springboot)),对学习和使用会更有帮助。
全栈程序员站长
2022/09/28
1.3K0
javaweb权限管理简单实现_开源权限管理框架
Daily-Blog项目后台日志
使用@ApiOperation(value = "友链评论列表",notes = "获取一页友链评论")来进行标注
用户11097514
2024/05/30
3220
Daily-Blog项目后台日志
RBAC模型与权限系统的梳理(附案例源码)
在进行查询时,自定义了一个异常类, 用于在用户查询不到是,打印出"用户不存在或密码有误"的异常
时间静止不是简史
2020/07/27
2.4K0
RBAC模型与权限系统的梳理(附案例源码)
SSM 单体框架 - 教育平台后台管理系统:权限模块开发
其次不同登陆用户要有不同的权利,而且要有不同的菜单(例如财务经理针对系统中财务相关模块进行操作,人事经理针对系统中人事模块进行操作)
RendaZhang
2020/09/24
1.9K0
权限想要细化到按钮,怎么做?
松哥最近正在录制 TienChin 项目视频~采用 Spring Boot+Vue3 技术栈,里边会涉及到各种好玩的技术,小伙伴们来和松哥一起做一个完成率超 90% 的项目,戳戳戳这里-->TienChin 项目配套视频来啦。
江南一点雨
2022/06/23
8760
权限想要细化到按钮,怎么做?
【JeeSite】角色和权限的修改(二次开发代码解析)
页面传参数menuIds , 数据库保存用的参数是menuList, 中间通过setMenuIds--->setMenuIdList---->menuList
ZhangXianSheng
2019/05/28
9920
杨校老师课堂之权限管理系统的核心业务逻辑接口设计
业务逻辑层接口核心代码展示: 用户模块 package cn.javabs.system.service; import java.util.List; import cn.javabs.common.core.entity.SysUser; /** * 用户 业务逻辑层 * * @author Mryang */ public interface SysUserService { /** * 根据条件分页查询用户列表 * * @param us
杨校
2022/09/23
2660
一行代码教你实现登录鉴权
小面的同事有一天来问小面,'小面啊,我最近看了springSecurity和shiro,感觉好难理解啊!'
灬沙师弟
2023/03/07
5340
一行代码教你实现登录鉴权
基于RBAC模型的权限系统设计(Github开源项目)
计划在Team的Github开源项目里加入权限控制的业务功能。从而实现权限控制。在很多管理系统里都是有权限管理这些通用模块的,当然在企业项目里,权限控制是很繁杂的。 Team的Github开源项目链接:https://github.com/u014427391/jeeplatform 欢迎star(收藏)
SmileNicky
2019/01/17
3.8K0
无限级菜单/权限树该如何设计
常用的树形显示插件有: JsTree, zTree, Layui Tree, Bootstrap Tree View 等。
一份执着✘
2018/12/14
5.7K0
SpringMVC+ZTree实现树形菜单权限配置
Team的Github开源项目链接:https://github.com/u014427391/jeeplatform 欢迎star(收藏)
SmileNicky
2019/01/17
2.7K0
[NewLife.XCode]角色权限
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。
大石头
2019/07/02
2.2K0
Spring Security----RBAC权限控制模型,和权限相关知识点整理
我们开发一个系统,必然面临权限控制的问题,即不同的用户具有不同的访问、操作、数据权限。形成理论的权限控制模型有:自主访问控制(DAC: Discretionary Access Control)、强制访问控制(MAC: Mandatory Access Control)、基于属性的权限验证(ABAC: Attribute-Based Access Control)等。最常被开发者使用也是相对易用、通用的就是RBAC权限模型(Role-Based Access Control),本文就将向大家介绍该权限模型。
大忽悠爱学习
2021/12/07
2.6K0
Spring Security----RBAC权限控制模型,和权限相关知识点整理
关于接口权限控制以及rbac
最常见的接口权限控制就是分端形式了,不同的端实现不同的接口,一个用户登录后,只能访问这个端的接口,而不能去访问其他端的接口.
仙士可
2020/11/23
2.2K0
关于接口权限控制以及rbac
若依权限设计与自定义新增用户
Qiuner
2024/10/09
6840
若依权限设计与自定义新增用户
巧用 MyBatis 构建树形结构
一般的做法是查询出所有, 然后递归构建树形结构, 但其实可以巧用 MyBatis 在查询时就进行转换, 这用到了 MyBatis 的 resultMap 功能.
一份执着✘
2019/12/29
2K0
相关推荐
Flask学习「一」(按钮,角色,菜单,用户,权限)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档