权限管理需要哪几张表

简介: 一个成熟的系统系统是离不开权限管理的,说权限管理就必须要说下权限管理经典的五张表了,无论是自定义的权限管理框架,还是流行的Shiro、SpringSecurity等权限管理框架都是离不开这五张表的,哪五张表呢,一起看下。

前言:

一个成熟的系统系统是离不开权限管理的,说权限管理就必须要说下权限管理经典的五张表了,无论是自定义的权限管理框架,还是流行的Shiro、SpringSecurity等权限管理框架都是离不开这五张表的,哪五张表呢,一起看下。


一.五张表



五张表分别是:用户表、角色表、权限表、用户角色表、角色权限表


1.用户表 user


一个系统少则几十个,多则成千上万个用户。我们会为每一个用户存储用户信息,用以该用户在登录时进行验证是否是合法的用户。该表的唯一作用也就是存储合法的用户信息。


2.角色表 role


一个系统拥有很多的用户,所以在实现权限管理时,我们不可能去根据用户进行实现权限控制,但是不同的用户又拥有很多的共性,因此我们根据用户的共性将用户划分为几种不同的角色,比如游客、普通会员、操作员、管理员、超级管理员等。这样我们只需要为每个用户指定一个角色,就可以轻松的根据角色进行判定当前用户是什么级别的用户了。


3.权限表也叫资源表 permission


一个系统中,我们可以将前端的页面看成一个资源,可以将前端的按钮看成资源,我们也可以将后端的接口看成资源。我们可以将一切需要控制访问权限的资源都配置在权限表中。大部分场景下我们的权限表都是存储资源描述符字符串比如:user:supplier:view。这既是一个资源描述符,如果一个资源的描述符是这个,那么用户只有拥有user:supplier:view,或者user:supplier:*(这里只关注操作位,其他两位为*也是可以的)。这两种资源描述符才可以正常访问到目标资源。


4.用户角色表 user_role_relation


用户怎么与角色表建立连接呢,自然就是通过用户角色表来建立这两张表的关系了。那么不可以使用外键来关联吗?当然是可以的,只不过本着解耦合的理念,对表的职责进行单一化处理。大部分场景都是不使用外键而是使用关系表来建立用户与角色的连接。


5.角色权限表 role_permission_relation


同理,该表就是为了建立角色与权限的连接。实现了用户到角色,角色到权限的转换,这样我们就可以为每个用户都分配到不同的权限了。


二.总结



1.权限管理的核心是角色表 role


角色的作用就是一个桥梁,他连接了用户与权限,自己却不会做什么事情,在基于资源描述符实现的权限管理系统里(当然也有基于角色实现的),我们是用不到角色的。角色就像是一个什么都不做的中间商,只是将用户与权限进行关联,告诉系统这个角色拥有哪些权限,真正判断时还是判断的权限表的内容。


2.三张表也可以实现权限管理


其实我们只需要用户表、角色表、权限表,这三张表也可以实现权限管理。三者的关系的建立,我们就通过在用户表增加外键,在角色表增加外键就可以实现,但是一般我们为了解耦合,是不会这么做的,这么做也降低了可读性,一般建议还是按照五张表的理念去实现。

相关文章
|
数据安全/隐私保护
经典权限系统设计(五张表)
经典权限系统设计(五张表)
|
IDE Java 开发工具
什么是IDE?新手用哪个IDE比较好?
什么是IDE?新手用哪个IDE比较好?
3126 0
|
JavaScript
原生js实现复选框(全选/全不选/反选)效果【含完整代码】
原生js实现复选框(全选/全不选/反选)效果【含完整代码】
542 1
|
5月前
|
算法 Java 开发者
Java 中 HashMap 的底层实现原理详解
深入分析 Java HashMap 的底层实现原理,包括数据结构、hash 算法和扩容机制
Java 中 HashMap 的底层实现原理详解
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能在教育领域的应用与挑战
随着科技的不断进步,人工智能(AI)技术已经深入到社会的各个领域,其中教育领域尤为突出。本文旨在探讨人工智能在教育领域的应用现状、面临的挑战以及未来的发展趋势。通过分析AI技术如何改变传统教学模式,提高教育质量和效率,同时指出其在实际应用中可能遇到的问题和挑战,为未来教育的发展提供参考。
974 2
|
11月前
|
开发框架 人工智能 安全
ModelScope魔搭25年5月发布月报
不知不觉间,日历已经翻过了立夏,而开源模型的世界中似乎并没有春夏秋冬。在刚刚过去的四月份,见证了开源社区又一次蓬勃发展的浪潮。以Qwen3家族为代表,一系列新模型的开源为整个生态注入了新的活力。通过全面覆盖多种规格的 dense 与 MoE 模型架构,Qwen3 首次在开源模型中引入“快思考与慢思考” 双模式的支持,获得了广大开发者的热烈欢迎,成为新一代开源大模型的标杆之作。
393 10
|
12月前
|
人工智能 自然语言处理 算法
全模态模型Qwen2.5-Omni开源,7B尺寸实现全球最强性能
通义千问Qwen2.5-Omni-7B正式开源,作为首个端到端全模态大模型,支持文本、图像、音频和视频等多种输入形式,实时生成文本与自然语音合成输出。它在多模态融合任务测评中刷新纪录,性能远超同类模型。Qwen2.5-Omni采用Thinker-Talker双核架构,实现语义理解与语音生成高效协同,以小尺寸7B参数让全模态大模型广泛应用成为可能,现已在魔搭社区和Hugging Face同步开源。
全模态模型Qwen2.5-Omni开源,7B尺寸实现全球最强性能
|
机器学习/深度学习 人工智能 自然语言处理
AI技术对法律行业有何影响?
【6月更文挑战第27天】AI技术对法律行业有何影响?
773 3
|
存储 前端开发 JavaScript
HTML元素周期表
HTML元素周期表
449 1
|
机器学习/深度学习 数据库 数据安全/隐私保护
RBAC模型介绍
RBAC模型是一种基于角色的访问控制机制,用于解决企业系统中不同用户对不同业务的权限管理问题。它将功能集合为角色,然后将角色分配给用户,简化了大量用户的权限分配过程,降低了操作错误和复杂性。通过角色,可以实现用户与功能的解耦,便于权限管理。在RBAC中,用户、角色和权限之间存在多对多的关系,通常涉及五张数据库表来维护这种关系。
886 10