论坛: 编程破解 标题: 我想问一下有关ASP中如何分配权限的问题。 复制本贴地址    
作者: sungod [sungod]    论坛用户   登录
我想问一下有关ASP中如何分配权限的问题。
在编网页是如何在其中分配用户权限。
是多做几个页面不同的权限打开不同的页面吗?
还是有其他方法。
知道的说一下用什么方法。如果能给出一个例子最好。谢谢。

地主 发表时间: 06-03-21 10:22

回复: ziaichen [ziaichen]   论坛用户   登录
1;可以用多做几个页面的方法:你可以在数据库表中增加字段,用来表示权限,如0代表超级管理员,1代表管理员,2代表斑竹,3代表普通用户,4代表限制级用户等等,这样在判断权限之后,在跳转不同的页面
2:可以做一个全部功能列表的页面:而这个页面的管理员就是超级管理员,在分配功能前要选定部门,部门中的用户,然后每个功能都是一个可选表单,选择则表示有此功能,没有则表示没有此功能。之后在提交时,就可以把权限赋予了用户。
在用户登陆后,进入的页面,其实是拥有全部功能的页面,但是由于不同用户有不同的权限,可以限制显示页面中此用户没有权限的部分。

另外转:关于权限包容关系通过角色和权限掩码来实现。

/// <summary>
/// 权限保护类型枚举类型。
/// </summary>
public enum ProtectEnum
{
/// <summary>撤回权限保护类型</summary>
RevokeProtect = 0,
/// <summary>授予权限保护类型</summary>
GrantProtect = 1,
/// <summary>拒绝权限保护类型</summary>
DenyProtect = 2
}

/// <summary>
/// 系统固定用户或角色枚举类型。
/// </summary>
/// <remarks>
/// 管理员角色:16399 = 100000000001111
/// 所有者角色:16385 = 100000000000001
/// 只读者角色:16386 = 100000000000010
/// 安全员角色:16388 = 100000000000100
/// 配置员角色:16392 = 100000000001000
/// </remarks>
public enum FixedRoleEnum
{
///<summary>系统管理员固定用户</summary>
Administrator = 1,
///<summary>系统管理员固定角色</summary>
Administrators = 16399,
///<summary>所有者固定角色(具有读写操作之权限)</summary>
Authors = 16385,
///<summary>只读者固定角色(具有只读操作之权限)</summary>
Readers = 16386,
///<summary>系统安全管理员固定角色</summary>
Security = 16388,
///<summary>系统设置管理员固定角色</summary>
Setting = 16392
}

/// <summary>
/// 系统权限枚举类型。
/// </summary>
public enum PermissionEnum
{
/// <summary>“读取”权限</summary>
FetchPermission = 1,
/// <summary>“新增”权限</summary>
AddNewPermission = 2,
/// <summary>“更新”权限</summary>
UpdatePermission = 4,
/// <summary>“删除”权限</summary>
DeletePermission = 8,
/// <summary>“打印”权限</summary>
PrintPermission = 16,
/// <summary>系统保留,应用于流程处理</summary>
FlowPermission = 1024,
/// <summary>系统保留,应用于流程处理</summary>
VoidPermission = 2048
}

如果用户“Popeye”对“销售出仓单[2009]”系统对象具有读写(读取+修改+删除+新增)权限:(权限表定义如下TPermission)
FormID      UID          Permission
=======      ====          ==========
2009        Popeye        1+2+4+8=15

***** 上面系统定义的默认权限肯定是不够系统使用的,那么还有一些权限(例如:报关系统中的“计算差异表”“制造申报单”等权限,就由系统再定义),其实不用太担心会不够用的,因为在一个Form中不可能会出现所有权限情况,所以,系统自定义的权限掩码可重复使用在不同的表单中。*****

����建议不要把角色和用户分开两张表来存储(可参考MS-SQL Server中的sys_users表),因为在后面的权限定义表需要引用这个表的UID(其可为用户或角色,SQL中是使用UID的数值范围来区别用户与角色的,建议也如此。),版主说的角色与用户分开对待权限设置,这点我不赞成。因为角色只不过是一种用户组,其应该享用用户的权限定义范围,在其下属的角色成员(注意角色成员不同于用户或角色哦,其可以为角色也可以为用户)均默认继承其定义的权限,除非角色成员重新指派其上级角色定义的权限字。下面给出我的相关表定义:

TUser(用户或角色表)
===================
(PK)UID  int              NOT NULL(主键)
Name      nvarchar(50)    NOT NULL(唯一性约束)
FullName  nvarchar(100)    NULL
Description  nvarchar(255)  NULL
MasterNo  varchar(25)    NULL(注:该字段对应为员工表中的员工编号,通过该字段就可以关联知道该用户或角色所属的员工了,在企业管理系统中很有用啊!)

TMember(用户与角色关系表)
=========================
(*PK)RoleID    int  NOT NULL
(*PK)UserID    int  NOT NULL

TPermission(用户权限表)
=======================
(*PK)FormID    int  NOT NULL(表示系统中各个模块或表单的唯一编号)
(*PK)UserID    int  NOT NULL(用户或角色编号)
Protect        bit  NOT NULL(1:表示显示授予权限;0:表示显示拒绝权限)
Permission    int  NOT NULL(权限掩码和)


B1层 发表时间: 06-03-22 09:39

回复: lwei889 [lwei889]   论坛用户   登录
这个问题应该是很常见的一个问题,比如我们绝大多数人都进不了核心地带那个版块,这就是权限。
而分配权限也很简单。在表中增加一个字段如roles定义类型为varchar这样是为了把权限划分的更加详细
对于不同的网页分配不同的权限代码,如:01,02,03....把这个权限代码存入roles字段中。这样再每个用户浏览只需要检查roles字段是否包含该权限标志 如:instr("01",rs("roles"))=0 则说明不能查看权限标志为01的网页  如instr("01",rs("roles"))>0则说明可以查看
具体如何超作,相信只要对ASP代码稍加熟悉,就很容易掌握

B2层 发表时间: 06-03-27 19:18

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号