首页 > 其他 > 详细

角色控制用户权限(一)

时间:2015-01-09 02:05:55      阅读:247      评论:0      收藏:0      [点我收藏+]

权限设计是软件开发中的一个重要;知识点下面是我研究登陆权限的一点心得以供参考 ;后面会持续更新

?

一;分析

? ? ?管理系统是我们最常见的,学校的教务系统,金蝶的K/3系统,都涉及到不同权限的人登陆可以操作的数据会有所不同; 不同权限是怎么在数据库中够成设计到一下一些概念;

?

? ? ?用户;就是软件使用者

?

? ? ?角色/组;软件使用者的身份

?

? ? ?权限;用户对软件的使用权限

?

??

二;数据库的设计

?

? ? ?1), 基于角色和权限的设计;


bubuko.com,布布扣
?

?

创建下面的四个表;

? ? 用户表;?

? ? ? ? ? ? ? ? ?用户名

? ? ? ? ? ? ? ? ?角色的名称

?

? ? 角色表

? ? ? ? ?权限

?

? ? 权限表

? ? ? ? ?权限地址的索引

?

? ? 权限地址表;

?

? ? ? ? ?权限地址

?

? ?

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普通权限

?

? ?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‘)))

?


bubuko.com,布布扣
?

查询00001管理员权限

?

? ?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=‘00001‘)))


bubuko.com,布布扣
?
?

?

?

? ?

角色控制用户权限(一)

原文:http://baihe747.iteye.com/blog/2174101

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!