`

Oracle 第七天 权限系统

阅读更多
用户实际需求

1.       所有的用户、角色可动态配置
2.       所有的系统菜单的权限要求具体到“增,删,改、查、打印、导出”这样的小权限的设计
3.       所有的权限基于角色来进行划分和判断
4.       一个用户可能属于多个角色
5.       系统菜单也能够动态的“增、删、改、查”





T_User表
CREATE
    TABLE T_USERS
    (
        USER_ID VARCHAR2(16) NOT NULL,
        PASSWORD CHAR(8),
        USER_NAME VARCHAR2(16),
        PRIMARY KEY (USER_ID)
    )

T_ROLE 表
CREATE
    TABLE T_ROLE
    (
        ROLE_ID VARCHAR2(16) NOT NULL,
        ROLE_DESCR VARCHAR2(32),
        PRIMARY KEY (ROLE_ID)
    )

CREATE
    TABLE T_USER_ROLE
    (
        USER_ID VARCHAR2(16) NOT NULL,
        ROLE_ID VARCHAR2(16) NOT NULL,
        PRIMARY KEY (USER_ID, ROLE_ID),
        CONSTRAINT FK_USER_ID FOREIGN KEY (USER_ID) REFERENCES T_USERS (USER_ID)
        ON
    DELETE
        CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE VALIDATE,
        CONSTRAINT FK_ROLE_ID FOREIGN KEY (ROLE_ID) REFERENCES T_ROLE (ROLE_ID)
        ON
    DELETE
        CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE VALIDATE
    )


CREATE
    TABLE T_SYS_MENU
    (
        MENU_ID VARCHAR2(16) NOT NULL,
        MENU_DESCR VARCHAR2(32),
        MENU_URL VARCHAR2(255),
        MENU_PID VARCHAR2(16),
        PRIMARY KEY (MENU_ID)
    )

CREATE
    TABLE T_PRIVILEGE
    (
        PRIVILEGE_ID VARCHAR2(3) NOT NULL,
        PRIVILEGE_TYPE VARCHAR2(8),
        PRIMARY KEY (PRIVILEGE_ID)
    )

CREATE
    TABLE T_MENU_PRIVILEGE
    (
        PKID VARCHAR2(16) NOT NULL,
        ROLE_ID VARCHAR2(16),
        MENU_ID VARCHAR2(16),
        PRIVILEGE_ID VARCHAR2(16),
        PRIMARY KEY (PKID),
        CONSTRAINT FK_ROLE_TO_PRIV FOREIGN KEY (ROLE_ID) REFERENCES T_ROLE (ROLE_ID)
        ON
    DELETE
        CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE VALIDATE,
        CONSTRAINT FK_PRIV FOREIGN KEY (PRIVILEGE_ID) REFERENCES T_PRIVILEGE (PRIVILEGE_ID)
        ON
    DELETE
        CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE VALIDATE,
        CONSTRAINT FK_MENU_TO_PRIV FOREIGN KEY (MENU_ID) REFERENCES T_SYS_MENU (MENU_ID)
        ON
    DELETE
        CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE VALIDATE
    )

插入数据

insert into T_USERS (USER_ID, PASSWORD, USER_NAME) values ('Tonny', 'abcdefg ', null);
insert into T_USERS (USER_ID, PASSWORD, USER_NAME) values ('Sammy', 'abcdefg ', null);
insert into T_USERS (USER_ID, PASSWORD, USER_NAME) values ('Sally', 'abcdefg ', null);
insert into T_USERS (USER_ID, PASSWORD, USER_NAME) values ('Jim', 'abcdefg ', null);
insert into T_USERS (USER_ID, PASSWORD, USER_NAME) values ('Danzel', 'abcdefg ', null);
insert into T_USERS (USER_ID, PASSWORD, USER_NAME) values ('Andy', 'abcdefg ', null);
insert into T_USERS (USER_ID, PASSWORD, USER_NAME) values ('Shawn', 'abcdefg ', null);


insert into T_ROLE (ROLE_ID, ROLE_DESCR) values ('user', '普通用户');
insert into T_ROLE (ROLE_ID, ROLE_DESCR) values ('manager', '部门经理');
insert into T_ROLE (ROLE_ID, ROLE_DESCR) values ('gmanager', '老总');
insert into T_ROLE (ROLE_ID, ROLE_DESCR) values ('admin', 'IT管理员');


insert into T_USER_ROLE (USER_ID, ROLE_ID) values ('Danzel', 'admin');
insert into T_USER_ROLE (USER_ID, ROLE_ID) values ('Danzel', 'manager');
insert into T_USER_ROLE (USER_ID, ROLE_ID) values ('Jim', 'admin');
insert into T_USER_ROLE (USER_ID, ROLE_ID) values ('Sammy', 'user');
insert into T_USER_ROLE (USER_ID, ROLE_ID) values ('Tonny', 'user');


insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('101', '报表查询', null, '0');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('102', '月报', 'xxx.do', '101');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('103', '季报', 'xxx.do', '101');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('104', '年报', 'xxx.do', '101');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('105', '系统管理', null, '0');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('106', '用户管理', null, '105');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('107', '新增用户', 'addUser.do', '106');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('108', '删除用户', 'delUser.do', '106');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('109', '角色管理', null, '105');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('110', '新增角色', 'addRole.do', '109');
insert into T_SYS_MENU (MENU_ID, MENU_DESCR, MENU_URL, MENU_PID) values ('111', '删除角色', 'delRole.do', '109');



insert into T_PRIVILEGE (PRIVILEGE_ID, PRIVILEGE_TYPE) values ('101', '增加');
insert into T_PRIVILEGE (PRIVILEGE_ID, PRIVILEGE_TYPE) values ('106', '报表');
insert into T_PRIVILEGE (PRIVILEGE_ID, PRIVILEGE_TYPE) values ('105', '打印');
insert into T_PRIVILEGE (PRIVILEGE_ID, PRIVILEGE_TYPE) values ('104', '查询');
insert into T_PRIVILEGE (PRIVILEGE_ID, PRIVILEGE_TYPE) values ('103', '修改');
insert into T_PRIVILEGE (PRIVILEGE_ID, PRIVILEGE_TYPE) values ('102', '删除');


insert into T_MENU_PRIVILEGE (PKID, ROLE_ID, MENU_ID, PRIVILEGE_ID) values ('1', 'user', '101', '106');
insert into T_MENU_PRIVILEGE (PKID, ROLE_ID, MENU_ID, PRIVILEGE_ID) values ('2', 'user', '102', '106');

递归查询菜单
SELECT * FROM T_SYS_MENU START WITH MENU_PID = 0 CONNECT BY PRIOR MENU_ID = MENU_PID ORDER BY MENU_ID;




已经用数据查询用句就将我们的这个“树”的层次关系理出来了,如果我们手上有一个控件叫dtree.js,那么一个循环就可以把这个树显示出来了





查询用户所能看到的菜单和所具有的权限
select distinct m.menu_id,m.menu_descr,m.menu_url,m.menu_pid,p.privilege_id,p.privilege_type from
t_menu_privilege mp,
t_sys_menu m,
t_privilege p,
t_user_role r
where
mp.privilege_id=p.privilege_id
and mp.role_id=r.role_id
and mp.menu_id=m.menu_id
and r.role_id='user'
order by m.menu_id;

结果示例图


还可参考
RBAC(Role-Based Access Control,基于角色的访问控制)













  • 大小: 70.8 KB
  • 大小: 31.1 KB
  • 大小: 58.9 KB
  • 大小: 42.1 KB
  • 大小: 52.3 KB
  • 大小: 85.5 KB
  • 大小: 144.2 KB
  • 大小: 12 KB
分享到:
评论

相关推荐

    Oracle课程设计(仓库管理系统)

    本系统将涵盖 Oracle 的安装与配置、创建数据库、用户与权限管理、对象创建与管理等方面的知识。 一、Oracle 的安装与配置 在开始设计仓库管理系统之前,需要首先安装和配置 Oracle 数据库管理系统。Oracle 的安装...

    ORACLE第4天

    【标题】"ORACLE第4天"所涉及的知识点主要集中在Oracle数据库的使用和管理上。Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它提供了强大的数据存储、管理和处理能力。在第四天的学习中,可能...

    Oracle数据库-成绩管理系统.docx

    7. **系统分析**:在第2章中,系统分析涉及到需求分析和功能分析,这是数据库设计的基础。通过明确系统的需求,如成绩管理、课程管理等,可以确定数据库应包含哪些实体和关系,以及它们应有的属性和操作。 8. **...

    21天学会oracle

    第7章 视图.ppt 第8章 函数与存储过程.ppt 第9章 游标.ppt 第10章 触发器.ppt 第11章 序列.ppt 第12章 用户角色与权限控制.ppt 第13章 Oracle数据类型.ppt 第14章 Oracle中的函数与表达式.ppt 第15章 Oracle中的控制...

    在uos服务器操作系统安装Oracle11g解决报错所有需要的依赖文件

    在UOS(统一操作系统)上安装Oracle 11g数据库时,可能会遇到各种依赖问题,因为Oracle 11g是为传统的Linux环境设计的,而UOS作为一个基于Linux的国产操作系统,其软件生态可能与Oracle的原生支持有所差异。...

    ORACLE第9天

    【标题】:“ORACLE第9天” 在Oracle数据库的学习旅程中,第九天可能涉及了深入理解Oracle数据库系统的关键概念和技术。Oracle是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导地位。这一天的...

    Oracle数据库系统应用与开发

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它在企业级数据管理和应用程序开发中扮演着核心角色。本资源“Oracle数据库系统应用与开发”深入探讨了Oracle数据库的使用和开发技术,特别关注...

    ORACLE第8天

    在“ORACLE第8天”这个主题中,我们聚焦于Oracle数据库系统的学习,这是一个广泛而深入的话题。Oracle数据库是全球广泛使用的大型企业级关系型数据库管理系统,由甲骨文公司开发和提供。在这个阶段的学习中,可能...

    ORACLE第1天

    【标题】"ORACLE第1天"涉及到的是Oracle数据库的基础学习内容。Oracle是全球最流行的商业关系型数据库管理系统之一,广泛应用于大型企业级系统。在第一天的学习中,通常会涵盖Oracle的基本概念、安装配置以及初步的...

    oracle 18天 入门 教程

    第7-14天,教程可能转向事务处理、视图、存储过程和触发器。事务处理是数据库操作的核心,它确保了数据的一致性。视图是虚拟表,可以帮助简化复杂的查询。存储过程和触发器是数据库编程的一部分,可以实现自动化任务...

    21天学通Oracle第二版

    《21天学通Oracle第二版》是一本旨在帮助初学者和进阶者在短时间内掌握Oracle数据库系统的实用教程。本书由电子工业出版社出版,通过21天的学习计划,系统地介绍了Oracle的基础知识、管理和开发技能,是Oracle学习者...

    ORACLE第10天

    【标题】"ORACLE第10天" 涉及的知识点主要集中在Oracle数据库系统的学习与操作上。Oracle是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导地位。在第10天的学习中,我们可以期待涵盖以下几个...

    ORACLE第3天

    在“ORACLE第3天”的学习中,我们将深入探讨Oracle数据库系统的核心概念和技术。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,它提供了强大的数据存储、管理、查询和分析功能。在这个阶段的学习中,我们...

    linux系统oracle安装包

    例如,`4.2.52-5.1.x86_64`可能表示这是针对x86_64架构的Linux系统的第5.1版的兼容库,版本号4.2.52指的是数据库兼容包的具体版本。 在安装Oracle数据库之前,确保你的Linux系统满足Oracle的最低硬件和软件需求。这...

    oracle创建用户并附权限文档

    在Oracle数据库管理中,创建用户并附权限是基础但至关重要的操作。这涉及到数据库的安全性、数据隔离以及角色管理等多个方面。以下将详细介绍如何在Oracle环境下创建用户,并赋予相应的权限。 首先,创建用户通常...

    20天学习Oracle

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,它以其高效、稳定和强大的功能而闻名。"20天学习Oracle"的课程可能是为了帮助初学者在短时间内掌握Oracle数据库的基础和核心概念。以下是对Oracle...

    oracle培训18天笔记

    Oracle提供了精细的权限管理机制,包括对象权限和系统权限。角色是权限的集合,方便权限分配。理解GRANT和REVOKE命令,以及默认权限和公共用户的概念。 第十四至十五天:备份与恢复 Oracle的备份主要包括物理备份和...

    win7系统安装oracle11g

    ### Win7系统安装Oracle 11g:详细步骤与注意事项 #### 一、安装前的准备工作及注意事项: 1. **安装包准备**:确保已经从Oracle官网下载了Oracle 11g的安装包,通常包括两个压缩包。解压这两个压缩包后,需要将第...

    oracle培训18天笔记

    第五天至第七天:Oracle架构与管理 1. 数据库实例与SGA:理解数据库实例的组成,包括系统全局区(SGA)和程序全局区(PGA)。 2. 表空间与数据文件:学习如何创建和管理表空间,以及数据文件的分配与扩展。 3. 用户...

    Oracle EBS 操作手册

    7. **安全性与权限管理**:Oracle EBS支持精细的权限控制,通过职责分配,确保用户只能访问其工作所需的特定功能和数据,保障企业信息的安全性。 8. **用户体验**:R12版本引入了改进的用户界面和用户体验设计,如...

Global site tag (gtag.js) - Google Analytics