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

文章介绍了使用Go语言和RESTfulAPI设计的REST2SQL系统,涉及Oracle数据库操作、角色权限管理、用户角色关联及MD5加密的应用。内容包括功能表、角色表、角色功能表和用户角色表的创建,以及用户登录验证和权限查询的SQL示例。
摘要由CSDN通过智能技术生成

【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');

在这里插入图片描述


本文完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值