权限管理需要哪几张表

简介: 一个成熟的系统系统是离不开权限管理的,说权限管理就必须要说下权限管理经典的五张表了,无论是自定义的权限管理框架,还是流行的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比较好?
2469 0
|
数据安全/隐私保护
经典权限系统设计(五张表)
经典权限系统设计(五张表)
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能在教育领域的应用与挑战
随着科技的不断进步,人工智能(AI)技术已经深入到社会的各个领域,其中教育领域尤为突出。本文旨在探讨人工智能在教育领域的应用现状、面临的挑战以及未来的发展趋势。通过分析AI技术如何改变传统教学模式,提高教育质量和效率,同时指出其在实际应用中可能遇到的问题和挑战,为未来教育的发展提供参考。
890 2
|
9月前
|
人工智能 自然语言处理 算法
全模态模型Qwen2.5-Omni开源,7B尺寸实现全球最强性能
通义千问Qwen2.5-Omni-7B正式开源,作为首个端到端全模态大模型,支持文本、图像、音频和视频等多种输入形式,实时生成文本与自然语音合成输出。它在多模态融合任务测评中刷新纪录,性能远超同类模型。Qwen2.5-Omni采用Thinker-Talker双核架构,实现语义理解与语音生成高效协同,以小尺寸7B参数让全模态大模型广泛应用成为可能,现已在魔搭社区和Hugging Face同步开源。
全模态模型Qwen2.5-Omni开源,7B尺寸实现全球最强性能
|
存储 缓存 NoSQL
Redis从入门到精通之底层数据结构简单动态字符串(SDS)详解
SDS是Redis中的一种字符串类型,它是一种二进制安全的字符串,由简单动态字符串(SDS)实现。SDS支持多种数据结构,其中字符串(String)是最常用的一种数据结构之一。SDS的优点在于它可以避免C字符串常见的问题,比如缓冲区溢出和内存泄露等。SDS的常数复杂度获取字符串长度和杜绝缓冲区溢出可以避免使用strlen和strcat函数时的一些问题。同时,SDS的空间预分配和惰性空间释放两种策略可以减少修改字符串的内存重新分配次数。SDS也是二进制安全的,因为它不是以空字符串来判断字符串是否结束,而是以len属性表示的长度来判断字符串是否结束。SDS还兼容部分C字符串函数
1042 89
Redis从入门到精通之底层数据结构简单动态字符串(SDS)详解
|
机器学习/深度学习 数据库 数据安全/隐私保护
RBAC模型介绍
RBAC模型是一种基于角色的访问控制机制,用于解决企业系统中不同用户对不同业务的权限管理问题。它将功能集合为角色,然后将角色分配给用户,简化了大量用户的权限分配过程,降低了操作错误和复杂性。通过角色,可以实现用户与功能的解耦,便于权限管理。在RBAC中,用户、角色和权限之间存在多对多的关系,通常涉及五张数据库表来维护这种关系。
548 10
|
存储 前端开发 JavaScript
HTML元素周期表
HTML元素周期表
361 1
|
图形学
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏4(附项目源码)
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏4(附项目源码)
414 0
|
机器学习/深度学习 存储 API
CVPR 2023 | InternImage: 65.4 mAP,刷新 COCO 目标检测榜单记录!
CVPR 2023 | InternImage: 65.4 mAP,刷新 COCO 目标检测榜单记录!
406 1
|
索引
POI(excel)中Cell应用实践总结
POI(excel)中Cell应用实践总结
505 0