谁能给我一个权限管理的例子?

esri 2003-08-26 09:29:29
表的设计
...全文
35 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lynx1111 2003-08-26
  • 打赏
  • 举报
回复
收藏!
txlicenhe 2003-08-26
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2180/2180181.xml?temp=.5715753

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

/// <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(权限掩码和)

***** 如果哪位兄弟有意研究权限与流程定制方面的东东,相信找偶是没错的了!!!呵呵~~~ 老板,给分啊~~~~~×××××

==========================================

以上的方法与我做的项目的方法基本一致,现摘一部分的表结构,以供大家参考
create table t_workelement /*工作元素表*/
(
code varchar(20) not null, /*元素的代码,唯一*/
name varchar(50) not null UNIQUE,/*元素的名称,唯一*/
type int not null, /*类型 0-单据操作 1-报表操作 2-功能操作*/
bcode varchar(20) null, /*对应操作的单据\报表\功能的代码*/
style int null, /*单据:类型 0-查看 1-新增 2-修改 3-删除*/
/*报表:无*/
/*功能:无*/
term ntext null, /*单据:查看\修改\删除时要符合的条件,如"{$承揽合同.编号}=12\n{$承揽合同.名称}<>'afd'"*/
primary key(code)
)
go
drop table t_role
go
create table t_role /*角色表*/
(
name varchar(30) not null,
category varchar(50) null,
remark varchar(100) null,
primary key(name)
)
go
drop table t_roleelement
go
create table t_roleelement /*角色元素操作表*/
(
rname varchar(30) not null, /*角色名称*/
ecode varchar(20) not null, /*元素的代码*/
primary key(rname,ecode)
)
go
drop table t_users
go
create table t_users /*用户表*/
(
name varchar(20) not null, /*用户的名称*/
dcode varchar(20) not null, /*所属的部门*/
category varchar(50) null, /*用户的类别*/
pswd varchar(15) null, /*密码*/
primary key(name)
)
go
/*插入系统管理员*/
INSERT INTO t_users
(
name,
dcode,
category,
pswd
)
VALUES
(
'Admini',
'system',
'超级用户',
''
)
go
drop table t_userrole
go
create table t_userrole /*用户角色表*/
(
uname varchar(20) not null, /*用户名称*/
rname varchar(30) not null, /*角色的名称*/
primary key(uname,rname)
)
go
INSERT INTO t_userrole
(
uname,
rname
)
VALUES
(
'Admini',
'系统管理员'
)
go
drop table t_dept
go
create table t_dept /*部门表*/
(
code varchar(20) not null, /*部门的代码*/
name varchar(50) not null UNIQUE,/*部门的名称*/
type varchar(10) null, /*部门的类别 行政 仓库 车间*/
subtype varchar(16) null, /*子类别 成品仓库 原料仓库自定义*/
primary key(code)
)
go
/*插入系统管理部*/
INSERT INTO t_dept
(
code,
name,
type
)
VALUES
(
'system',
'系统管理部',
'行政'
)
go
免费试听地址:B站搜索JeeGit观看《JeeSite4.x数据权限教程》、《JeeSite1.2.7系列基础教程》、《JeeSite4.x系列基础教程》等相关课程! 郑重声明:购课前,请认真听完第一章 课程简介 建议实战人群直接听:第九章、第十章 学生人群、刚入门:全听       数据权限主要讲解内容包含第一章 课程简介31.1 课程目标31.2 适用人群31.3 课程简介31.4 环境要求31.5 课程知识点大全31.6 课程售价31.7 购课声明31.8 资源清单31.9 售后方式41.10 讲师介绍4第二章 权限基础42.1 权限模型概述4第三章 JeeSite权限管理模型123.1 JeeSite1.2.7 权限管理模型123.2 JeeSite4.x 权限管理模型123.3 JeeSite4.x权限设计的扩展13第四章 用户管理144.1 JeeSite4.x内置用户类型144.1.1 用户管理思路144.1.2 网站会员、员工、单位、个人登录视图配置154.2 用户数据权限类型164.3实战训练、调试、日志查看16第五章 机构管理16第六章 角色管理186.1 JeeSite4.x角色管理概述186.2 JeeSite4.x越级授权与菜单权重186.3 JeeSite4.x 越级授权可能存在的隐患极其解决方案196.4用户表如何区分非管理员、系统管理员、二级管理员206.5 角色权限注意事项206.6 角色授权数据范围使用注意事项216.7 为何用户不设置员工权限无效?236.8 岗位管理与角色分类的岗位分类与角色分类有何区别?23第七章 二级管理员23第八章 系统管理员238.1 系统管理员238.2 总结:何时使用超级管理员、系统管理员、二级管理员?23第九章 Jeesite数据权限调用239.1 JeeSite4.x数据调用基础239.2 JeeSite4.x 实现数据列权限推荐解决方案249.3多数源模式下数据权限bug简易解决方案249.4 JeeSite4.x 自定义扩展数据权限249.5支持全球地区、全球企业、全球机构、全球部门授权24第十章 JeeSite数据权限实战2410.1 案例一2410.2 案例二2410.3 案例三2510.4 案例四2510.5 案例五25第十一章 JeeSite4.x常见问题解答251.1数据权限管理的代码会公开吗,购买了能看吗?251.2 JeeSite数据权限教程是Thinkgem录制的吗?25第十二章 参考阅读2612.1、JeeSite官方文档2712.2、美国国家标准与技术研究院2712.3、中国国家标准化管理委员会2712.4、ITSEC欧洲安全评价标准2812.5、百度学术2812.6、开源框架2912.6.1 JeeSite2912.6.2 Casbin2912.6.3 Eladmin2912.6.4 Spring-boot-demo2912.6.5 Jeeplatform3012.6.6 Pig3012.6.7 Jeecg-boot3012.6.8 Jfinal3012.6.9 Guns3112.6.10 Zheng3112.6.11 Cloud-Platform3112.7 博文资源31

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧