权限系统开发

经典角色权限系统设计五张表及扩展应用,

    作为程序开发者,都很清楚权限系统是每个系统里面必备的最基础的系统,然而权限系统设计却在有些时候挺麻烦的,现在整理了下,给正在开发此模块的朋友一些思路!

    设计基础:用户、角色、权限三大核心表,加上用户角色表(Roleinfo)、菜单表(Monuinfo)、用户角色表(UserRole)、角色菜单表(RoleMenu)。

    各表的大体表结构如下:

    1、用户表(Userinfo):id、UserName、UserPwd

    2、角色表(Roleinfo):id、RoleName

    3、菜单表(Meuninfo):id、MenuName

    4、用户角色表(UserRole):id、Userid、Roleid

    5、角色菜单表(RoleMenu):id、Userid、Menuid

    最关键的地方是,某个用户登录时,如何查找该用户的菜单权限?其实一条语句即可解决;

    假如用户的用户名为Arthur,则他的菜单权限查询如下:

    Select m.id, m.MenuName from Menuinfo m.Userinfo u, UserRolemenu rm where m.id = rm.Menuid and ur.Userid = u.id and u.UserName = 'Arthur'

    任何权限的需求,都是为广义的用户分配角色,角色拥有广义的权限。角色是最重要的中枢,隐藏做幕后黑手,从不出现在业务代码里,用行话说就是解除了用户和权限的直接耦合。

    角色把用户抽象画了,几百个用户变成几个角色,用户-》角色-》权限写成通用判断权限的方法:currUser.isHave(xx权限)。核心就是一个sql联表查询语句,查询条件为用户的id。

    例如

    部门权限:部门也是一种用户,建立 部门表、部门角色表、通用权限方法里加上 当前部门-》部门所属角色-》权限

    职位权限:职位也是一种用户,建立职位表、职位角色表,通用权限方法里加上 当前部门-》部门所属角色-》权限

    菜单:也是一种权限,建立 菜单表、角色菜单表、就把菜单纳入了权限管理。通用权限方法里加上角色列表-》权限-》菜单

1、用户信息表:

    create table employee(

    userid varchar(50) not null, --用户id

    username varchar(100),  --用户名

    userpassword varchar(100), --密码  

)

alter table employee    --主键

add constraint pk_employee_userid primary key(userid)

2、角色表:

create table role(

    roleid varchar(50) not null,  --角色id

    rolename varshar(100),  -- 角色名称

)

alter table role    --主键

add constraint pk_role_roleid primary key(roleid)

3、权限菜单表:

create table popedom(

    popedomid int identity(1,1) not null,  --权限id

    popedomname varchar(100),  --权限名称

    popedomfatherid int, --权限父id

    popedommurl varchar(100) -- 树的连接路径

)

    alter table popedom    --主键

    add constraint pk_popedom primary key(popedomid)

    添加数据如:

    insert into popedom values('我的办公桌',0,'')

    insert into popedom values('电子邮箱',1,'../mail/EmaiolManage.aspx')

    (添加数据的原则是一级接点的popedomfatherid为o,如果是(我的办公桌)下面的接点,他们的popedomfatherid为(我的办公桌)的主键)

4、用户与角色关系表:

    create table user_role(

    connectionid int identiy(1,1) not null,  --关系id

    userid varchar(50)not nill, --管理员表id

    roleid varchar(100) not null --角色id

)

alter table user_role    --主键

add constraint pk_admin_role primary key(connectionid)


5、角色与权限关系表:

    create table role_popedom(  --角色与权限表

    connectionid int identity(1,1),  --关系id

    roleid varchar(50) not null,  --角色id

    popedomid int not null,  --权限id

    popedom int  -- 权限(1为可用,2为不可用)  

)

alter table role_popedom    --主键

add constraint pk_role_popedom primary key(connectionid) --主键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值