我的编程空间,编程开发者的网络收藏夹
学习永远不晚

管理控制台权限控制

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

管理控制台权限控制

管理控制台权限控制

本文讨论一种常见的权限控制方式:

权限管理使用分层思想:一共分四层

 

1.菜单/页面/按钮授权

系统用户对菜单/页面/按钮的可见性
(不可见不代表不能访问接口)

2.接口(功能)授权

系统用户对接口的是否有访问权限

3.数据授权

系统用户对接口有访问权限,但是只能操作被授权的数据.
例如:商户都能使用【订单查询】接口,但是只能看到自己店铺中的商品订单。


数据操作:增改查(删=改状态或标志位)

授权功能:

1.新建(能新建肯定可以查和改)

2.能看不能改

3.能看能改不能新建

4.根本不能看

 

角色自身需要功能:

1.新建(能新建肯定可以查和改)

 

某一个角色对另一个角色的数据有诉求:

2.能看不能改

3.能看能改不能新建

例如:role1角色能看role2角色的数据,但是不能修改其数据。

 

实现方式:

1.静态业务数据配置表,例如商户,商品等,每个表添加两个字段(如tbl_sapo_product表):

create_role_id

last_update_role_id

 

示例:

-- 以下操作前提为相关接口均已授权

1.role1登录进来,新建记录,create_role_id = last_update_role_id = role1

2.role1登录进来,role1对create_role_id = role1的数据,有增改查权限;

3.role1对于create_role_id=role2的数据如有相关操作类型授权,可以进行相关类型的数据操作([能看不能改]或[能看能改]两个类型),有更新操作则更新last_update_role_id=role1;

(即:tbl_sapo_admin_role_rel中配置了father_role_id=role2,child_role_id=role1,func_id=【更新功能接口】)

 

 

2.对于动态业务数据表,例如订单等,只有查/改需求

 

方案一(基于静态表权限):

动态数据表一定引用了静态数据表,例如:订单表中有商品id.价格id等

这些静态数据的归属和授权决定了这些动态数据的归属和授权.

即你是该商品的创建者或者有该数据权限,你可以查看该商品下的订单.

以查询订单为例:

1.首先role1对[订单查询]接口有调用权限

2.订单中的商品id对应的商品create_role_id=role1

或者create_role_id=role2, 但是role1继承role2数据和[订单查询]操作权限

3.role1可以顺利查询.

(每个接口使用哪些静态表id由接口自己判定)

 

方案二(动态和静态表授权解耦):

你有权维护(增改查)这个商店和产品,不见得你就能查看这个商店下所有产品的订单记录

例如:role1有权限增改查一类门店和门店下的商品,但是他只能查看某个门店的某几个商品的订单信息.

 

以查询订单为例:

1.首先role1对[订单查询]接口有调用权限.

2.查询role1和[订单查询]操作授权了哪些商品id的集合.

3.订单中的商品id在授权集合中则顺利查询.

 

方案二:

优点:是处理静态配置表和动态业务表的接口授权完全解耦,更加灵活。
缺点:实现和管理更加复杂。例如role1新建了商品1,需要额外添加role1对商品1的授权。

 

 

 

4.字段授权

只能看见被授权的字段

  

;
;
;
;
;
;

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_account` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `login_name` varchar(255) NOT NULL COMMENT "登录名",
  `login_password` varchar(255) NOT NULL COMMENT "登录密码",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-初始化,1-已邀请,2-已注册",
  `remark` varchar(255) DEFAULT NULL COMMENT "备注",
  `admin_user_id` int(10) unsigned DEFAULT NULL COMMENT "管理人员id,tbl_sapo_admin_user表id",
  PRIMARY KEY (`id`),
  UNIQUE KEY `uni_idx_admin_account_login_name` (`login_name`),
  KEY `idx_admin_account_admin_user_id` (`admin_user_id`),
  CONSTRAINT `fk_admin_account_admin_user_id` FOREIGN KEY (`admin_user_id`) REFERENCES `tbl_sapo_admin_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="系统管理账户";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_api` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `api_code` varchar(255) NOT NULL COMMENT "api代码",
  `api_path` varchar(1024) NOT NULL COMMENT "api路径",
  `api_desc` varchar(255) NOT NULL COMMENT "api描述",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-无效,1-有效",
  `handle_type` int(10) unsigned NOT NULL DEFAULT 0 COMMENT "操作类型:0-静态数据,1-动态数据",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="系统接口";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_func_api` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `func_id` int(10) unsigned NOT NULL COMMENT "系统功能id,tbl_sapo_admin_sys_func表id",
  `api_id` int(10) unsigned NOT NULL COMMENT "接口id,tbl_sapo_admin_api表id",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-无效,1-有效",
  PRIMARY KEY (`id`),
  KEY `idx_admin_func_api_func_id` (`func_id`),
  KEY `idx_admin_func_api_api_id` (`api_id`),
  CONSTRAINT `fk_admin_func_api_api_id` FOREIGN KEY (`api_id`) REFERENCES `tbl_sapo_admin_api` (`id`),
  CONSTRAINT `fk_admin_func_api_func_id` FOREIGN KEY (`func_id`) REFERENCES `tbl_sapo_admin_sys_func` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="功能api";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_handle_log` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `handle_type` int(10) unsigned NOT NULL DEFAULT 0 COMMENT "操作类型:0-登录",
  `result` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "结果:0-失败,1-成功",
  `admin_account_id` int(10) unsigned NOT NULL,
  `admin_user_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_admin_handle_log_admin_account_id` (`admin_account_id`),
  KEY `idx_admin_handle_log_admin_user_id` (`admin_user_id`),
  CONSTRAINT `fk_admin_handle_log_admin_account_id` FOREIGN KEY (`admin_account_id`) REFERENCES `tbl_sapo_admin_account` (`id`),
  CONSTRAINT `fk_admin_handle_log_admin_user_id` FOREIGN KEY (`admin_user_id`) REFERENCES `tbl_sapo_admin_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="管理员操作日志";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_menu` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `parent_menu_id` int(10) unsigned DEFAULT NULL COMMENT "父菜单id,tbl_sapo_admin_menu表id",
  `name` varchar(255) DEFAULT NULL COMMENT "菜单名",
  `link` varchar(512) DEFAULT NULL COMMENT "菜单路径",
  `icon` varchar(512) DEFAULT NULL COMMENT "菜单图标",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-无效,1-有效",
  PRIMARY KEY (`id`),
  KEY `idx_admin_menu_parent_menu_id` (`parent_menu_id`),
  CONSTRAINT `fk_admin_menu_parent_menu_id` FOREIGN KEY (`parent_menu_id`) REFERENCES `tbl_sapo_admin_menu` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="菜单";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_role` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `role_code` varchar(255) NOT NULL COMMENT "角色编号",
  `role_name` varchar(255) NOT NULL COMMENT "角色名称",
  `role_desc` varchar(255) DEFAULT NULL COMMENT "角色名称",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-无效,1-有效",
  `super_flag` int(10) unsigned NOT NULL DEFAULT 0 COMMENT "超级管理员标志:0-非超级,1-超级管理员",
  PRIMARY KEY (`id`),
  UNIQUE KEY `uni_idx_admin_role_role_code` (`role_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="角色";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_role_menu` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `role_id` int(10) unsigned NOT NULL COMMENT "系统角色id,tbl_sapa_admin_role表id",
  `menu_id` int(10) unsigned NOT NULL COMMENT "系统菜单id,tbl_sapo_admin_menu表id",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-无效,1-有效",
  PRIMARY KEY (`id`),
  KEY `idx_admin_role_menu_menu_id` (`menu_id`),
  KEY `idx_admin_role_menu_role_id` (`role_id`),
  CONSTRAINT `fk_admin_role_menu_menu_id` FOREIGN KEY (`menu_id`) REFERENCES `tbl_sapo_admin_menu` (`id`),
  CONSTRAINT `fk_admin_role_menu_role_id` FOREIGN KEY (`role_id`) REFERENCES `tbl_sapo_admin_role` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="角色菜单";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_role_rel` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-无效,1-有效",
  `father_role_id` int(10) unsigned NOT NULL COMMENT "父角色id,tbl_sapo_admin_role表id",
  `child_role_id` int(10) unsigned NOT NULL COMMENT "子角色id,tbl_sapo_admin_role表id",
  `data_auth_type_id` int(10) unsigned NOT NULL COMMENT "授权类型id,tbl_sapo_admin_data_auth表id",
  `func_id` int(10) unsigned NOT NULL COMMENT "系统功能id,tbl_sapo_admin_sys_func表id",
  PRIMARY KEY (`id`),
  KEY `idx_admin_role_rel_father_role_id` (`father_role_id`),
  KEY `idx_admin_role_rel_child_role_id` (`child_role_id`),
  KEY `idx_admin_role_rel_func_id` (`func_id`),
  CONSTRAINT `fk_admin_role_rel_child_role_id` FOREIGN KEY (`child_role_id`) REFERENCES `tbl_sapo_admin_role` (`id`),
  CONSTRAINT `fk_admin_role_rel_father_role_id` FOREIGN KEY (`father_role_id`) REFERENCES `tbl_sapo_admin_role` (`id`),
  CONSTRAINT `fk_admin_role_rel_func_id` FOREIGN KEY (`func_id`) REFERENCES `tbl_sapo_admin_sys_func` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="角色关系(子角色能继承父角色的数据)";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_role_sys_func` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-无效,1-有效",
  `role_id` int(10) unsigned DEFAULT NULL COMMENT "角色id,tbl_sapo_admin_role表id",
  `func_id` int(10) unsigned DEFAULT NULL COMMENT "功能id,tbl_sapo_admin_sys_func表id",
  PRIMARY KEY (`id`),
  KEY `idx_admin_role_sys_func_role_id` (`role_id`),
  KEY `idx_admin_role_sys_func_func_id` (`func_id`),
  CONSTRAINT `fk_admin_role_sys_func_func_id` FOREIGN KEY (`func_id`) REFERENCES `tbl_sapo_admin_sys_func` (`id`),
  CONSTRAINT `fk_admin_role_sys_func_role_id` FOREIGN KEY (`role_id`) REFERENCES `tbl_sapo_admin_role` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="角色系统功能";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_sys_func` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-无效,1-有效",
  `func_code` varchar(255) DEFAULT NULL COMMENT "系统功能代码",
  `func_desc` varchar(255) DEFAULT NULL COMMENT "系统功能描述",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="系统功能";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `nick_name` varchar(255) DEFAULT NULL COMMENT "昵称",
  `name` varchar(255) NOT NULL COMMENT "姓名",
  `gender` int(10) unsigned NOT NULL DEFAULT 2 COMMENT "性别:0-女1-男,2-未知",
  `phone_no` varchar(64) NOT NULL COMMENT "手机号",
  `mail` varchar(255) NOT NULL COMMENT "邮箱",
  `status` int(10) unsigned NOT NULL DEFAULT 0 COMMENT "状态:0-在岗,1-停岗,2-离岗",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="管理人员";

CREATE TABLE IF NOT EXISTS `tbl_sapo_admin_user_role` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT "主键",
  `create_time` datetime(3) NOT NULL COMMENT "创建时间",
  `last_update_time` datetime(3) DEFAULT NULL COMMENT "最后更新时间",
  `account_id` int(10) unsigned NOT NULL COMMENT "账号id,tbl_sapo_admin_account表id",
  `role_id` int(10) unsigned NOT NULL COMMENT "管理人员角色表id,tbl_sapo_admin_role表id",
  `status` int(10) unsigned NOT NULL DEFAULT 1 COMMENT "状态:0-无效,1-有效",
  PRIMARY KEY (`id`),
  KEY `idx_admin_user_role_role_id` (`role_id`),
  KEY `idx_admin_user_role_account_id` (`account_id`),
  CONSTRAINT `fk_admin_user_role_account_id` FOREIGN KEY (`account_id`) REFERENCES `tbl_sapo_admin_account` (`id`),
  CONSTRAINT `fk_admin_user_role_role_id` FOREIGN KEY (`role_id`) REFERENCES `tbl_sapo_admin_role` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="账户角色";

;
;
;
;
View Code

 本文来自云海天,作者:wanglifeng,转载请注明原文链接:https://www.cnblogs.com/wanglifeng717/p/16200942.html

原文地址:https://www.cnblogs.com/wanglifeng717/archive/2022/04/27/16200942.html

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

管理控制台权限控制

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

管理控制台权限控制

本文讨论一种常见的权限控制方式:权限管理使用分层思想:一共分四层 1.菜单/页面/按钮授权系统用户对菜单/页面/按钮的可见性(不可见不代表不能访问接口)2.接口(功能)授权系统用户对接口的是否有访问权限3.数据授权系统用户对接口有访问权限,但是只能操作被授权的
管理控制台权限控制
2014-05-12

MongoDB权限控制(6)

权限概述在mongodb里面的用户是属于数据库的,每个数据库有自己的管理员,管理员登录后,只能操作所属的数据库。注意:一般在admin数据库中创建的用户授予超级管理员权限,登录后可以操作任何的数据库。创建超级管理员注意:在开启权限管理控制时,一定先要创建一个超
MongoDB权限控制(6)
2016-01-23

权限管理——多系统下的数据权限通用控制

还有更多的类似问题,都是多系统数据权限控制需要解决的。虽然具体到每个小点,单从技术的角度来说,可能未必很难,但要支持更多系统,具备更好的通用化,还有很长的一段路可走。这是一个会随着业务的发展,需要持续改进的工作。

MySQ权限控制语句

1.使用root账号登陆到MySQL服务器:mysql -u root -pmypass;2.切换到mysql数据库实例:use mysql;3.查看用户表:select host, user, password from user;4.创建一个只允许从本机登
MySQ权限控制语句
2021-01-27

MySQL 权限控制详解

mysql权限控制 作为一名DBA,想必大家对MySQL中的权限都不陌生,MySQL中对于权限的控制分为三个层面:全局性的管理权限,作用于整个MySQL实例级别数据库级别的权限,作用于某个指定的数据库上或者所有的数据库上数据库对象级别
2022-05-12

Android权限控制之自定义权限

天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy。为了方便叙述,我这边会用到两个app作为例子示范。 Permission App: used to define a new permission 这个作为定
2022-06-06

轻量应用服务器控制台在哪找到设置权限管理

轻量应用服务器控制台是一款可以管理应用程序权限的工具,通常位于您的计算机或移动应用程序中。以下是一些常见的选项和设置选项:设置访问控制列表(ACL):ACL是一种强制访问控制列表,其中列出了每个应用程序可以访问的特定属性和方法。使用ACL可以确保只有授权访问者可以访问该应用程序并使用特定的功能。设置应用程序身份验证和授权:使用应用程序身份验证(Applicationauthenticat
2023-10-26

如何为AmazonAurora设置访问控制和权限管理

要为Amazon Aurora设置访问控制和权限管理,可以按照以下步骤进行操作:创建数据库用户:首先,您需要创建数据库用户,并为其分配适当的权限。您可以使用SQL命令在Aurora数据库中创建用户,并为其授予所需的权限。设置数据库访问策略
如何为AmazonAurora设置访问控制和权限管理
2024-04-09

Teradata中怎么管理用户权限和访问控制

在Teradata中,用户权限和访问控制主要通过以下几种方式进行管理:创建和管理用户:管理员可以通过使用Teradata Administrator工具或者SQL语句来创建新用户,设置用户的登录名、密码、默认数据库等信息,并且可以随时修改或
Teradata中怎么管理用户权限和访问控制
2024-04-09

MySQL如何利用DCL管理用户和控制权限

DCL(Data Control Language):数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户。 一、管理用户1、创建用户-- 创建用户 CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码
2022-05-30

Redis权限管理体系:终于等来了Redis权限控制体系ACL

Redis在存储系统界的使用排名一直遥遥领先,但Redis6版本之前,一直没有一套较为全面的权限控制体系。而随着Redis6版本被更多人使用后,权限控制系统也逐渐广泛应用起来了,本文就探索一下Redis ACL的主要内容。

编程热搜

目录