許可權設計是軟體開發中的乙個重要;知識點下面是我研究登陸許可權的一點心得以供參考 ;後面會持續更新
一;分析
管理系統是我們最常見的,學校的教務系統,金蝶的k/3系統,都涉及到不同許可權的人登陸可以操作的資料會有所不同; 不同許可權是怎麼在資料庫中夠成設計到一下一些概念;
使用者;就是軟體使用者
角色/組;軟體使用者的身份
許可權;使用者對軟體的使用許可權
二;資料庫的設計
1), 基於角色和許可權的設計;
建立下面的四個表;
使用者表;
使用者名稱角色的名稱
角色表許可權
許可權表許可權位址的索引
許可權位址表;
許可權位址
2),表的建立
使用者表 ;
create table an_users
( userid number(7) not null,
usermail varchar2(30) not null,
username varchar2(30) not null,
userpwd varchar2(30) default '888888',
createdate date not null,
usertype varchar2(20) default 'users',
userip varchar2(30) default '127.0.0.1'
)alter table an_users
add constraint an_users_pk primary key (usermail)
角色表;
create table an_action
( actionid number(7) not null,
usertype varchar2(30) not null,
msgname varchar2(30) not null
)
許可權表;
create table an_msg
( msgid number(30) not null,
msgname varchar2(30) not null,
menuid number(30) not null
)
許可權位址表;儲存具體的位址
create table an_menu
( menuid number(30) not null,
menu_href varchar2(30) not null
)
分析建立的表之間的關係;
1,判斷使用者是否存在 ,在登陸時查詢username 返回null表示不存在該使用者
2,如果查詢到該使用者,
使用者表的usertype欄位和角色表的usertype相同,角色表的msgname與許可權表的msgname相同,
許可權表的menuid與許可權位址menuid相同;
語句為;查詢使用者00002的許可權
select menu_href from an_menu where menuid in (select menuid from an_msg where msgname in (select msgname from an_action where usertype in (select usertype from an_users where u sername='00002')))
向四張表中插入資料;
select t.*, t.rowid from an_menu t
insert into an_menu values(an_menu_id.nextval,'材料申請表');
insert into an_menu values(an_menu_id.nextval,'材料領取');
insert into an_menu values(an_menu_id.nextval,'材料申請記錄');
insert into an_menu values(an_menu_id.nextval,'許可權分配');
insert into an_menu values(an_menu_id.nextval,'普通員工');
insert into an_menu values(an_menu_id.nextval,'員工總人數');
insert into an_menu values(an_menu_id.nextval,'個人資料');
insert into an_menu values(an_menu_id.nextval,'員工的出勤表');
select t.*, t.rowid from an_msg t where msgname='**鏈管理'
insert into an_msg values(an_msg_id.nextval,'**鏈管理',1);
insert into an_msg values(an_msg_id.nextval,'**鏈管理',3);
insert into an_msg values(an_msg_id.nextval,'**鏈管理',4);
insert into an_msg values(an_msg_id.nextval,'**鏈管理',5);
insert into an_msg values(an_msg_id.nextval,'**鏈管理',6);
insert into an_msg values(an_msg_id.nextval,'**鏈管理',7);
insert into an_msg values(an_msg_id.nextval,'**鏈管理',9);
insert into an_msg values(an_msg_id.nextval,'普通**鏈管理',2);
insert into an_msg values(an_msg_id.nextval,'普通**鏈管理',8);
select t.*, t.rowid from an_action t
insert into an_action values(an_action_id.nextval,'users','**鏈管理');
insert into an_action values(an_action_id.nextval,'admin','普通**鏈管理');
commit;
select t.*, t.rowid from an_users t
insert into an_users values(an_user_id.nextval,'15616121427','00001','888888',sysdate,'admin','127.0.0.1');
insert into an_users values(an_user_id.nextval,'110','00002','888888',sysdate,'users','127.0.0.1');
執行查詢語句
查詢00002普通許可權
查詢00001管理員許可權
Oracle 使用者 角色以及許可權控制
系統許可權請使用dba操作 建立使用者 create user myuser identified by myuser 賦予許可權 grant create session privilege to myuser 賦予表空間 alter user myuser quota unlimited on ...
Oracle 使用者 角色以及許可權控制
oracle 使用者 角色以及許可權控制 首先獲取dba許可權 建立使用者 create user myuser identified by myuser 賦予許可權 grant create session privilege to myuser 賦予表空間 alter user myuser q...
RabbitMQ使用者角色及許可權控制
user 有5種 tags management 訪問 management plugin policymaker 訪問 management plugin 和管理自己 vhosts 的策略和引數 monitoring 訪問 management plugin 和檢視所有配置和通道以及節點資訊 ad...