【REST2SQL】13 用户角色功能权限设计

【REST2SQL】01RDB关系型数据库REST初设计
【REST2SQL】02 GO连接Oracle数据库
【REST2SQL】03 GO读取JSON文件
【REST2SQL】04 REST2SQL第一版Oracle版实现
【REST2SQL】05 GO 操作 达梦 数据库
【REST2SQL】06 GO 跨包接口重构代码
【REST2SQL】07 GO 操作 Mysql 数据库
【REST2SQL】08 日志重构增加输出到文件log.txt
【REST2SQL】09 给Go的可执行文件exe加图标和版本信息等
【REST2SQL】10 REST2SQL操作指南
【REST2SQL】11 基于jwt-go生成token与验证
【REST2SQL】12 REST2SQL增加Token生成和验证


用户角色功能权限一般包括功能管理、角色管理、角色功能设置、用户管理、用户角色设置等。

1 权限管理表的设计

这里以oracle建表为例。

1.1 功能表

create table S_MENU
(
  p_id    VARCHAR2(4) not null,
  s_name  VARCHAR2(63),
  s_ename VARCHAR2(63),
  s_winp  VARCHAR2(63),
  s_note  VARCHAR2(63),
  s_parm  VARCHAR2(63)
);
alter table S_MENU
  add constraint PK_S_MENU primary key (P_ID)
  

示例数据如下:
在这里插入图片描述

insert into S_MENU (P_ID, S_NAME, S_ENAME, S_WINP, S_NOTE, S_PARM)
values ('9000', '系统管理', null, null, null, '模块');

insert into S_MENU (P_ID, S_NAME, S_ENAME, S_WINP, S_NOTE, S_PARM)
values ('9005', '功能菜单', null, 'w_menu', null, null);

insert into S_MENU (P_ID, S_NAME, S_ENAME, S_WINP, S_NOTE, S_PARM)
values ('9010', '角色功能设置', null, 'w_role_menu', null, null);

insert into S_MENU (P_ID, S_NAME, S_ENAME, S_WINP, S_NOTE, S_PARM)
values ('9020', '用户角色设置', null, 'w_user_role', null, null);

insert into S_MENU (P_ID, S_NAME, S_ENAME, S_WINP, S_NOTE, S_PARM)
values ('9055', '代码表', null, 'w_input1_code', null, null);

insert into S_MENU (P_ID, S_NAME, S_ENAME, S_WINP, S_NOTE, S_PARM)
values ('9060', '查询分析器', null, 'w_sql', null, null);

insert into S_MENU (P_ID, S_NAME, S_ENAME, S_WINP, S_NOTE, S_PARM)
values ('9065', 'oracle系统锁', null, 'w_oracle_lock', null, null);

1.2 角色表

create table S_ROLE
(
  p_id   VARCHAR2(17) not null,
  s_name VARCHAR2(52),
  date_t DATE,
  s_note VARCHAR2(52)
);
alter table S_ROLE
  add constraint PK_S_ROLE primary key (P_ID)

在这里插入图片描述

1.3 角色功能表

create table S_ROLE_MENU
(
  pf_role VARCHAR2(17) not null,
  pf_menu VARCHAR2(17) not null,
  date_t  DATE
);
alter table S_ROLE_MENU
  add constraint PK_ROLE_MENU primary key (PF_ROLE, PF_MENU)

在这里插入图片描述

1.4 用户表

create table S_USER
(
  p_id    VARCHAR2(15) not null,
  s_name  VARCHAR2(31),
  s_passw VARCHAR2(52),
  s_sjhm  VARCHAR2(11),
  s_email VARCHAR2(63),
  s_note  VARCHAR2(63)
);
alter table S_USER
  add constraint PK_S_USER primary key (P_ID)

在这里插入图片描述
这里密码用MD5加密保存。加密方法就用oracle自带的md5加密包。

CREATE OR REPLACE FUNCTION MD5_32(plaintext varchar2) RETURN varchar2 is
  --MD5加密
BEGIN
  return utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => plaintext));
END MD5_32;

1.5 用户角色表

create table S_USER_ROLE
(
  pf_user VARCHAR2(17) not null,
  pf_role VARCHAR2(17) not null,
  date_t  DATE
);
alter table S_USER_ROLE
  add constraint PK_USER_ROLE primary key (PF_USER, PF_ROLE)

在这里插入图片描述
这里一个用户可以设置多个角色,用户的功能权限为多个角色功能权限的叠加,查询语句如下:

select distinct
       m.p_id || m.s_name || nvl(m.s_note,'') as s_name,
        m.s_WINp,   
         m.s_PARM,   
         m.p_id as pf_menu
from s_user_role u
left join s_role_menu r on r.pf_role = u.pf_role
left join s_menu m on m.p_id = r.pf_menu
where u.pf_user = :s_user

2 系统管理

2.1 用户-角色-功能管理

设计功能菜单、角色功能设置和用户角色设置实现整个系统管理。以下页面用远古时期的Powerbuilder实现。

在这里插入图片描述

2.2 登录验证

select 1 as valid from S_USER where P_id = '9998' and s_passw = md5_32('8999');

在这里插入图片描述


本文完。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【每日一题】2024年3月汇编(上)

3.1【2369】检查数组是否存在有效划分 2369. 检查数组是否存在有效划分https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/ 1.这样的判断可以用动态规划来解决,用一个长度为(n1) 的数组来记录 是否存在有效划分,dp[i]…

【iOS】ARC学习

文章目录 前言一、autorelease实现二、苹果的实现三、内存管理的思考方式__strong修饰符取得非自己生成并持有的对象__strong 修饰符的变量之间可以相互赋值类的成员变量也可以使用strong修饰 __weak修饰符循环引用 __unsafe_unretained修饰符什么时候使用__unsafe_unretained …

webstorm 使用prettier格式化保存 导致代码缩进与gitlab代码不一致问题

问题 webstorm显示缩进正常 gitlab显示不正常 解决 .prettierrc.js module.exports {printWidth: 100,tabWidth: 2,useTabs: false, //设置为false 不使用tab作为缩进符semi: true,vueIndentScriptAndStyle: true,singleQuote: true,quoteProps: as-needed,bracketSpaci…

肖恩的投球游戏——前缀和

题目链接:1.肖恩的投球游戏 - 蓝桥云课 (lanqiao.cn) 前缀和: package lanqiao;import java.util.Arrays; import java.util.Scanner;/*** 2023/11/29* 前缀和问题*/ public class lanqiao3693_肖恩的投球游戏 {public static void main(String[] args) …

vue3+vite项目打包遇到的问题

一、项目打包出现空白页 vite.config.js中,添加base: ./ import { defineConfig } from vite import vue from vitejs/plugin-vueexport default defineConfig({base: ./, })router/index.js,将路由模式改成hash模式 import { createRouter, createWe…

性能分析调优模型

性能测试除了为获取性能指标外,更多是为了发现性能瓶颈和性能问题,然后针对性能问题和性能瓶颈进行分析和调优。在当今互联网高速发展的时代,结合传统软件系统模型以及互联网网站特征,性能调优的模型可以归纳总结为如图1-5-1所示的…

idea 的基本配置

一、安装目录介绍 其中:bin 目录下: 二、配置信息目录结构 这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性,就是你删除掉整个目录之后,重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置,所以很多…

力扣● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇

● 583. 两个字符串的删除操作 注意审题: 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 删除最少的字符使两者相同,说明留下来的就是最大公共子序列。不要求…

01.Vue2入门

一、为什么要学习Vue 1.前端必备技能 2.岗位多,绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能(Vue2Vue3) 二、什么是Vue 概念:Vue (读音 /vjuː/,类似于 view) 是一套 **构建用户界面 ** 的 渐进式 …

多种双拼方案的实现

首发日期 2024-03-14, 以下为原文内容: 就像 GNU/Linux 用户, 虽然比例小, 却又分散为一堆不同的发行版. 双拼用户在拼音输入法之中的比例也很小, 同时也分为各种不同的双拼方案. 那么作为一个 双拼 输入法, 最重要的事情是什么呢 ? 嗯, 那当然是支持自定义双拼方案 ! 实际上…

网络协议与层次划分:探索计算机网络体系结构

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

AWTK slider_circle 控件发布

slider_circle 控件。 主要特色: 支持正向和反向支持设置滑块的半径支持背景线宽和颜色支持前景线宽和颜色支持设置是否显示值的文本支持设置起始角度和结束角度支持设置格式化值的格式字符串支持使用图片填充背景和前景 界面效果: 注意: …

【绘图案例-绘图的方式1 Objective-C语言】

一、接下来,我们来说这个,绘图的方式 1.新建一个项目,Name:04-绘图的方式, 方式:就是,我要同样画一条线,然后,用不同的代码,把它写出来,这就叫方式, 我们在storyboard里边,还拖一个UIView,这些步骤都一样, 我们来一个,宽= 300, 高 = 300 , 然后,再来一个水…

zabbix配置

1 下载zabbix 1 配置yum源 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release- 5.0-1.el7.noarch.rpm yum clean all yum makecache fast 完成后会出现zabbix.repo文件 2安装zabbix服务 yum -y install zabbix-server-mysql zabbix-web-mysql z…

计算机网络——物理层(信道复用技术)

计算机网络——物理层(信道复用技术) 信道复用技术频分多址与时分多址 频分复用 FDM (Frequency Division Multiplexing)时分复用 TDM (Time Division Multiplexing)统计时分复用 STDM (Statistic TDM)波分复用码分复用 我们今天接着来看信道复用技术&am…

20W-50W厚膜无感电阻TO-220封装技术规格散热说明

EAK为设计工程师提供了一种开放式屏蔽基板器件,用于需要卓越热性能的应用,开发了一种额定功率高达 50W 的厚膜功率电阻器。该电阻器采用 TO-220 开放式屏蔽基板封装,并具有与基板粘合的绝缘锥形文丘里管,以实现最大的散热。 电阻器…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Counter)

计数器组件,提供相应的增加或者减少的计数操作。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 接口 Counter() 从API version 9开始,该接口…

Flask 专题

[CISCN2019 总决赛 Day1 Web3]Flask Message Board 查看session解密 但不知道密钥,题目说FLASK,那肯定就是找密钥,发现输入什么都没有显示,只有author那里有回显在版上,所以尝试sstl,{{config}}找到密钥 扫目录发现有admin进入…

Python数学建模-2.5Pandas库介绍

2.5.1Pandas基本操作 Pandas是一个强大的Python数据分析库,它提供了快速、灵活且富有表现力的数据结构,设计初衷是为了处理关系型或标记型数据。Pandas的基本操作涵盖了数据的读取、处理、筛选、排序、分组、合并以及可视化等多个方面。 以下是一些Pan…

判断闰年(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int year 2000;//执行循环判断&#xff1b;while (year < 2010){//执行流程&#xff1b;//判断能否整除4&#xff1…