通常“应用模块”和“动作定义”是由系统开发商在系统设计、开发阶段就定义好了,在系统交付给用户使用后就不再对此更改了(当然这也不是绝对的)。
权限设计数据库结构表
--权限许可
create table res_permission
(
roleid INTEGER,
resourceid varchar2(30),
operationid integer,
primary key(roleid,resourceid,operationid)
)
--角色定义
create table res_role (
roleid INTEGER,
rolename varchar2(30),
roledesc varchar2(100),
primary key(roleid)
)
--角色权限
create table res_userrole (
roleid INTEGER,
userid varchar2(30),--用户名
primary key(roleid,userid)
)
--资源
create table res_resource (
resourceid varchar2(20),
resourcename varchar2(30),
resourcedesc varchar2(100),
primary key(resourceid)
)
--操作信息
create table res_operation (
operationid varchar2(20),
operationname varchar2(30),
operationdesc varchar2(100),
primary key(operationid)
)
--res_operation 表的序列号
create sequence res_operation_seq;
--res_role 表的序列
create sequence res_role_seq;
--建立soperationid与sroleid两个序列分别用来产生Operation表与Role表的ID列 create sequence soperationid increment by 1 start with 1 nomaxvalue minvalue 1; create sequence sroleid increment by 1 start with 1 nomaxvalue minvalue 1;
--表设计的原理
--根据交叉法来匹配权限
--1:根据用户表中的用户id关联到res_userrole的userid,然后再关联到res_role,查出用户对应的所有权限,存放到list中
--2:根据资源和操作查询出用户可以操作的所有许可res_permission,存放到list中
--3:通过同时遍历两个list,查询出是否存在交叉,如果存在就是有权限,否则为无权限