设计表:
Users 用户表 字段:userid,username,userpermission
Roles 角色表 字段:roleid,rolename,rolepermission
UserInRole 用户角色对应表 字段:userid,roleid
PermissionList 权限列表 字段:permissionid,permissionDescription,permissionGroup
权限设计:许可、禁止和未设置三种状态,Allow,Deny,Not Set 目标: 实现用户权限的定义。 首先定义角色权限,用户与角色间是多对多的关系。用户权限继承自角色权限。
情况一:用户所属的多个角色存在权限冲突时,取最小权限,即某权限角色A许可,角色B禁止,则该权限为禁止。
情况二:用户所属的角色均未对某权限进行设置时,即NotSet状态,则该权限同DENY
情况三:用户所属的角色对某权限为许可时,也可单独设置该权限为禁止。 功能: 设置用户权限: 默认情况下,用户权限继承自所属角色的权限 可单独设置某用户的权限 扩展权限 权限定义可随时增加,并可以分组。当增加权限时,默认的角色权限均为未设置状态
permissionlist中数据如下: permissionid,permissionDescription,permissionGroup
1, AddUser , 用户管理组
2, DelUser , 用户管理组
3, EditUser , 用户管理组
4, AddRole , 角色管理
5, DelRole , 角色管理
6, EditRole , 角色管理
7, AddMember , 角色管理
8, RemoveMember , 角色管理 角色中定义一个账号管理员的角色.这个角色专门用来添加/删除用户的 则其权限为1,2,3许可,其他未设置 另一个角色管理员,权限为4,5,6,7,8为许可,其他未设置. 则 若用户A同时属于两个角色时,则拥有全部权限
我原来的想法是设置userpermission为binary字段,存取长的二进制数.权限可按位取. 如账号管理员的角色权限值为11100000, 角色管理员的角色权限值为00011111, 则用户A的权限为两个角色的按位进行或运算的值为11111111. 但编程实现起来好像很不方便. 而且存成binary字段的话,要将长串0101的字符做为二进制数存进SQL数据库,好像实现起来也不那么容易.因为要将0101的字符串转为int型,大点也就是bigint型,受其大小限制,01字符串的长度不可能超过30位.也就是权限定义不超过30个.所以不知道怎么搞了. 再则,当用户所属的角色过多时,或运算量就可能会比较大,可能会影响程序性能.当然,用户权限在继承自角色权限时,就只运行一次或运算,之后将其权限值存入userpermission中,这样或许会加强一点点性能.
用户认证管理设计方案
1) 具有创建用户、修改用户和删除用户的功能: Administrator
2) 具有创建角色和删除角色的功能: Administrator
Static_User字段名 |
详细解释 |
类型 |
备注 |
UserID |
路线编号 |
varchar(20) |
PK |
UserName |
用户名称 |
varchar(20) |
|
UserPwd |
用户密码 |
varchar(20) |
|
LastSignTime |
最后登陆时间 |
datatime |
|
SignState |
用户登陆状态标记 |
int |
|
TickeID |
验证票记录编号 |
varchar(128) |
|
|
|
|
|
Static_User字段名 |
详细解释 |
类型 |
备注 |
RoleID |
角色编号 |
varchar(20) |
PK |
RoleName |
角色名称 |
varchar(20) |
|
RoleNote |
角色信息描述 |
varchar(20) |
|
|
|
|
|
Static_User字段名 |
详细解释 |
类型 |
备注 |
UserRoleID |
用户角色编号 |
varchar(20) |
PK |
UserID |
用户编号 |
varchar(20) |
FK |
RoleID |
角色编号 |
varchar(20) |
FK |
UserRoleNote |
用户角色信息描述 |
varchar(20) |
|
|
|
|
|
Static_User字段名 |
详细解释 |
类型 |
备注 |
PermissionID |
编号 |
varchar(20) |
PK |
PermissionName |
权限名称 |
varchar(20) |
|
PermissionNote |
全息信息描述 |
varchar(20) |
|
|
|
|
|
Static_User字段名 |
详细解释 |
类型 |
备注 |
RolePermissionID |
角色权限编号 |
varchar(20) |
PK |
RoleID |
角色编号 |
varchar(20) |
FK |
PermissionID |
权限编号 |
varchar(20) |
FK |
RolePermissionNote |
角色权限信息描述 |
varchar(20) |
|
|
|
|
|