微信小程序入门03-搭建权限系统,建库建表

news2024/11/28 9:31:54

我们准备零基础搭建一个小程序,小程序分为两部分,一个是用户访问的程序,可以是小程序也可以是H5。另外一个就是管理员使用的管理后台,后台第一个要实现的就是搭建权限系统。为了搭建权限系统,我们先需要梳理概念

1 RBAC模型

我们首先问一下chatgpt如何设计一个权限系统

设计一个权限系统需要考虑以下几个方面:

  1. 用户与角色的关系:确定每个用户在系统中所扮演的角色,比如管理员、普通用户等。

  2. 角色与权限的关系:为每个角色分配相应的权限,比如某个角色可以查看、修改、删除某些数据,而另一个角色只能查看。

  3. 资源管理:确定需要进行权限控制的资源,比如文件、页面、数据等。

  4. 权限验证:在用户访问某个资源时,需要对用户所属的角色和该资源的权限进行验证,以决定是否允许访问。

基于以上方面,可以设计一个基本的权限系统框架。在具体实现时,可以采用一些常用的技术,比如 RBAC(基于角色的访问控制)模型、ACL(访问控制列表)模型等。同时,需要注意安全性和性能方面的考虑,比如防止恶意攻击、避免权限验证成为系统瓶颈等。

准备采用RBAC的模型,问一下chatgpt啥是RBAC

RBAC是基于角色的访问控制(Role-Based Access Control)的缩写。它是一种安全访问控制机制,它通过对用户赋予角色,进而控制用户对资源的访问。在RBAC模型中,用户角色是与其所拥有的权限相关联的。这些权限可被分配给不同的角色,而不是直接给予用户。这样做的好处是,管理员可以更轻松地管理用户和权限,而且可以更容易地分配权限给多个用户。RBAC模型被广泛地应用在计算机系统、网络安全、企业管理等领域。

我们使用e-r图来表达一下三者直接的关系
在这里插入图片描述

2 表结构设计

有了e-r图我们就可以设计数据库的表结构,分别有如下表

  1. 用户表(user)
字段名称字段类型字段名描述
user_idINT用户ID
usernamevarchar用户名
passwordvarchar密码
emailvarchar邮箱
phonevarchar手机号
  1. 角色表(role)
字段名称字段类型字段名描述
role_idINT角色ID
role_namevarchar角色名称
  1. 权限表(permission)
字段名称字段类型字段名描述
permission_idINT权限ID
permission_namevarchar权限名称
permission_descvarchar权限描述
  1. 角色权限关系表(role_permission)
字段名称字段类型字段名描述
role_idINT角色ID
permission_idINT权限ID
  1. 用户角色关系表(user_role)
字段名称字段类型字段名描述
user_idINT用户ID
role_idINT角色ID

3 数据库脚本

CREATE DATABASE diancan;
CREATE TABLE user (
  user_id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL UNIQUE,
  password VARCHAR(50) NOT NULL,
  email VARCHAR(50) NOT NULL UNIQUE,
  phone VARCHAR(20) NOT NULL UNIQUE
);

CREATE TABLE role (
  role_id INT PRIMARY KEY AUTO_INCREMENT,
  role_name VARCHAR(50) NOT NULL UNIQUE
);

CREATE TABLE permission (
  permission_id INT PRIMARY KEY AUTO_INCREMENT,
  permission_name VARCHAR(50) NOT NULL UNIQUE,
  permission_desc VARCHAR(100) NOT NULL
);

CREATE TABLE role_permission (
  role_id INT,
  permission_id INT,
  PRIMARY KEY(role_id, permission_id),
  FOREIGN KEY(role_id) REFERENCES role(role_id),
  FOREIGN KEY(permission_id) REFERENCES permission(permission_id)
);

CREATE TABLE user_role (
  user_id INT,
  role_id INT,
  PRIMARY KEY(user_id, role_id),
  FOREIGN KEY(user_id) REFERENCES user(user_id),
  FOREIGN KEY(role_id) REFERENCES role(role_id)
);

4 将Mysql添加到系统变量中

如果我们想在cmd中直接使用Mysql的命令,需要将mysql添加到系统变量中

在此电脑,点击右键,点击属性
在这里插入图片描述
点击高级系统设置
在这里插入图片描述
点击环境变量
在这里插入图片描述
选中Path,点击编辑
在这里插入图片描述
点击新建
在这里插入图片描述
输入mysql的安装目录,要选到bin目录
在这里插入图片描述
重新打开cmd,输入如下命令

mysql -V

可以看到已经可以正常显示mysql的版本了
在这里插入图片描述

5 登录mysql

在命令行输入登录命令

mysql -uroot -p

在这里插入图片描述

6 创建数据库

在命令行输入创建脚本

create database dianzan;

然后输入以下脚本查看是否创建成功

show databases;

在这里插入图片描述
然后我们切换到创建好的数据库

use dianzan;

在这里插入图片描述
输入我们创建表的脚本
在这里插入图片描述
可以使用show tables来查看我们的表是否正常创建

总结

我们本篇是介绍如何搭建权限系统,包括如何建库建表,搭建库表就和盖房子打地基一样,地基打扎实了我们就可以往上盖楼了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/533157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle自增序列探秘:一篇文章教你读懂

目录 1:什么是Oracle 自增长序列 2 :创建数据-->实现自增长序列 2.1 创建序列 2.2 使用序列 3 :查询数据-->实现自增长序列 1:什么是Oracle 自增长序列 Oracle自增长序列是一种生成唯一数字的方法,可以用于创…

NXP MCUXPresso - .h: No such file or directory

文章目录 NXP MCUXPresso - .h: No such file or directory概述备注END NXP MCUXPresso - .h: No such file or directory 概述 在尝试迁移 openpnp - Smoothieware project 从gcc命令行 MRI调试方式 到NXP MCUXpresso工程. 快摸进门了. 按照C工程编译的. 头文件路径都加好…

Wijmo 2023 Crack添加的一些改进

Wijmo 2023 Crack添加的一些改进 改进了对React 18的支持-增加了对Reack 18严格模式的支持,这有助于开发人员在开发过程中发现常见的错误。 可访问性改进-以下是本版本中添加的一些改进: 改进了FlexGridFilter弹出窗口,用于按条件和值进行筛选…

文本三剑客之——sed编辑器

sed编辑器 sed编辑器sed基础语法sed查询sed删除sed 替换sed 插入 sed编辑器 sed是文本处理工具,依赖于正则表达式,可以读取文本内容,工具指定条件对数据进行添加、删除、替换等操作,被广泛应用于shell脚本,以完成自动…

【交直流保护用HJZ-Y910静态中间继电器 性能稳定功耗小 JOSEF约瑟】

品牌:JOSEF约瑟,型号:HJZ-Y910,名称:静态中间继电器,额定电压:48220VDC;48415VAC,触点容量:250V/5A,功率消耗:≤5W,动作时…

Linux的常见指令(下)

常见指令以及权限理解(下) 基础指令的继续学习,本篇博客是对于Linux的大部分常见指令的学习和使用,指令的选项都是比较常用的,基本的复制移动,删除文件or目录,查看文件的三种方式cat、more、le…

区块链技术方向的就业前景

区块链技术是一个快速发展的领域,目前正在被越来越多的企业和组织广泛应用。区块链技术在金融、物流、医疗、社交媒体等众多领域都有着广泛的应用。因此,区块链技术方向的就业前景非常乐观。 区块链技术是新一代信息技术的重要组成部分,区块…

SpringBoot 发送邮件(四十三)

从头开始,并不意味着失败,相反,正是拥抱成功的第一步,即使还会继续失败 上一章简单介绍了 SpringBoot 整合 ES (四十二), 如果没有看过,请观看上一章 一. 发送邮件 关于发送邮件的功能和基础知识,老蝴蝶这儿就不重点…

NodeJs在Linux下使用的各种问题

环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linux下Nodejs安装(完整详细) 如果想解决问题的话,输入下面的命令即可…

Sentinel-1的GRD和SLC数据的区别和联系

目录 01 前言 02 Sentinel1下载时的基本参数解释 2.1 卫星平台 2.2 产品类型 03 SLC数据和GRD数据的区别 3.1 处理过程的区别 3.2 处理操作的一点解释 3.2.1 为什么要做地形辐射校正? 3.2.2 多普勒地形校正和地形辐射校正的区别? 01 前言 最近…

【软考数据库】第十二章 事务管理

目录 12.1 事务的基本概念 12.2 数据库的并发控制 12.3 数据库的故障与恢复 12.3.1 事务故障 12.3.2 系统故障 12.3.3 介质故障 12.3.4 数据库备份 12.4 数据库的安全性与完整性 前言: 笔记来自《文老师软考数据库》教材精讲,精讲视频在b站&am…

B2B2C商城系统怎么挑选好?

B2B2C商城它不仅提供B2B模式下的批量交易,还为消费者提供了B2C模式的优质购物体验,因此,越来越多的企业或商家开始重视B2B2C商城系统的搭建,如目前的SHOP、Magento等商城系统。那么,如何挑选合适的B2B2C商城系统呢&…

接口自动化测试—如何实现多套环境的自动化测试?

在敏捷迭代的项目中,通常会将后台服务部署到多套测试环境。那么在进行接口自动化测试时,则需要将服务器的域名进行配置。使用一套接口测试脚本,通过切换域名地址配置,实现多套环境的自动化测试。 实战练习 分别准备两套测试环境…

ffmpeg合并多张图片为视频,加转场

需求是合并多个图片为视频,并在每个图片衔接处加入转场特效,第一种方式是用fade做转场,第二种方式是xfade做转场,xfade的转场特效更多,建议用这个。如果对你有帮助,点赞收藏。 第一种:直接用fa…

实验十 超市订单管理系统综合实验

实验十 超市订单管理系统综合实验 应粉丝要求,本博主帮助实现基本效果! 未避免产生版权问题,本项目博主不公开源码,如果您遇到相关问题可私聊博主! 一、实验目的及任务 通过该实验,掌握利用SSM框架进行系…

涂鸦智能幻彩灯带开发包,如何帮助开发者寻找创意?

如果你常看短视频,一定被各种炫酷的幻彩灯带产品刷屏过。随着智能幻彩灯带的问世,其玩法也愈加丰富。比如支持用户对灯带上的每一颗灯珠实现亮度和颜色的单独调节,并专属自定义你想要的场景模式,呈现出花式的动态灯光效果。 而且…

【采访】 | “标准化推动车辆诊断的质量和效率”

机动车产业/行业(Mobility Industry)的变化速度比以往任何时候都快,电动和替代驱动以及数字化和自动驾驶变得愈发重要,需要更为强大且智能的车辆。与此同时,E/E系统的复杂性也在不断增加,这对车载通信提出了…

Vue - el-form的学习记录 - 记录问题解决方法

问题1: Elementui在重置表单时,无法使用this.$refs[‘formRefVal‘].resetFields()清空表单数据; 必须为每一个 el-form-item 配置一个指定的 prop 参数,this.$refs[‘formRefVal‘].resetFields() 它会跟进初始值,还…

深入分析:香港 windows 和linux VPS 区别和使用需求

​  香港虚拟专用服务器 (VPS) 两种常见的操作类型是 Windows 和 Linux VPS。尽管两者都提供相似的好处,但两者之间的显著差异会影响哪一个更适合用户的特定需求。 在本文中,我们将探讨这两种解决方案之间的主要区别,包括它们的操作系统和软…

IM即时通讯系统[SpringBoot+Netty]——梳理(四)

文章目录 九、消息业务的核心之消息可达性、一致性、幂等性、实时性1、消息实时性—利用多线程解决消息串行的问题,提高处理效率2、消息实时性—校验逻辑前置由tcp通过feign接口提前校验3、消息实时性—利用mq异步持久化消息4、用了TCP就不会丢包、丢消息了吗&#…