锁定老帖子 主题:用户权限管理设计(数据库)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-17
由于项目需要!需要在一套现有系统上开发权限管理系统! 先说说之前的权限是怎么管理的吧. 当时由于时间有限.所以只是临时管理权限
首先数据库有一个权限字段. varchar USER_RIGHT 里面放入 0....1..0 指定长度的字符串.同时创建一个权限字典表进行管理... 这样. 我们在制定用户相关的权限时候. 查询该字段.某个长度为1的 说明拥有该权限....长度权限表示通过字典表管理
此方法使用比校见得.但是管理却很麻烦..使用程序中进行管理. 相对后台拥有树形节点的 不方便隐藏相关节点信息
现在来说说 项目中现在使用的权限管理.. 使用数据库表设计来管理 表: MW_SYS_MENUS 菜单表. MW_SYS_ROLES 角色表. MW_USER_INFO 用户表. MW_SYS_MENU_ROLE 菜单角色表. MW_SYS_USER_ROLE 用户角色表.
通过以上五张表进行相关权限管理分配
简单说下. 用户表 . 角色表 . 菜单表 . 是三张独立主表 需要注意一下的是. 菜单表设计室需要用到树形结构.推荐技术(DOJO, JQUERY ,EXT) 所以该表的设计可以使用自关联实现 ID(ID) PARENT_ID(父节点ID) NAME (菜单名称) ..... 1 null 系统管理 2 1 用户管理 3 1 角色管理 4 1 菜单管理 5 null 财务管理 6 5 财务报表查询 . .
相关的.角色菜单表..关联 角色表 和 菜单表 不用的角色看到不同的菜单. 相互制约. 如: 用户管理 角色管理 菜单管理 物流报表查询 短信发送 等等.... 以上一系列菜单通过 不同的角色指定.
用户角色表 关联 用户表 和 角色表 给不同的用户指定不同的角色. 如: 系统管理员 普通管理员 物流管理员 以上三种角色... 通过用户角色表 多对多 关联用户表...
以上就是数据库表结构设计. 然后程序中只要开发设计即可(如果有好的建议希望能跟帖说出.谢谢!)
一下贴出我们项目中一些相关图
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-16
楼主继续啊!
|
|
返回顶楼 | |
发表时间:2009-10-16
最好能把代码贴出来看一下!
|
|
返回顶楼 | |
发表时间:2009-10-16
都是操作权限吧,数据权限呢?我对数据权限比较感兴趣。呵呵~网上很多操作权限的案例,貌似没有把数据权限讲得比较清楚的。期待楼主能拿出个比较完整的数据权限解决方案。
|
|
返回顶楼 | |
发表时间:2009-10-17
数据级权限
CREATE TABLE [dbo].[FBF_PRIVILEGE]( [ID] [dbo].[ID] IDENTITY(1,1) NOT NULL, [PRIVILEGE] [varchar](1024) NOT NULL, [TYPE] [dbo].[TYPE] NULL, [POLICY_EXPRESSION] [EXPRESSION] NULL, [POLICY_SCRIPT] [SCRIPT] NULL, [POLICY_HANDLE] [HANDLE] NULL, [STATE] [dbo].[STATE] NULL, [DESCRIPTION] [dbo].[DESCRIPTION] NULL, [REMARK] [dbo].[REMARK] NULL, [BACKUP] [dbo].[BACKUP] NULL, CONSTRAINT [PK_FBF_PRIVILEGE] PRIMARY KEY NONCLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'默认只用填写PRIVILEGE就可以了,程序提供默认权限验证策略。 例如:PRIVILEGE 可以是 URL、接口名.方法名、菜单名,直接验证。 如果 PRIVILEGE 为“EXPRESSION”,那么需要执行表达式返回true或false验证。 如果 PRIVILEGE 为“SCRIPT”,那么需要执行脚本返回true或false验证。 如果 PRIVILEGE 为“HANDLE”,那么需要执行该类的方法返回true或false验证。' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'FBF_PRIVILEGE' |
|
返回顶楼 | |
发表时间:2009-12-02
没有专门研究过权限管理,不清楚原来还分为:操作权限和数据权限。
在我看来这些都是不必。其实个人感觉可以通过事物码来解决问题。把所有的画面打开和数据库操作处理都写到business里面。对每一个处理方法添加一个唯一“事物码”。权限管理结合角色和权限等级,在调用每个方法的时候判断权限即可。 这样可以实现最大限度的自由设置。不过不方便管理。毕竟事物码是写在程序中的,没有在数据库中操作方便。 呵呵,只是初步想法,有兴趣可以一起讨论! |
|
返回顶楼 | |
发表时间:2009-12-03
没下文儿了。
|
|
返回顶楼 | |
发表时间:2009-12-03
怎么不继续了。
|
|
返回顶楼 | |
发表时间:2009-12-03
后续:
控制某些IP段才可以登录,所以做了一下改进: MW_SYS_USER_ROLE 用户角色表 USER_ID NUMBER NO 1 用户ID ROLE_ID NUMBER NO 2 角色ID IP_ROLE NUMBER NO 2 0:正常,1:IP段角色 增加IP角色字段, 同时增加用户对应IP表 MW_USER_IP 用户IP表 ID NUMBER No 1 SEQ_MW_USER_IP_ID USER_IP VARCHAR2(100) Yes 2 用户ID IP_ADDRESS VARCHAR2(100) Yes 3 IP段 说明: 通过设置用户(IP段角色<在规定IP段中,才可以访问的角色>) 将用户设置IP段角色后,等同于用户有2个角色, 正常登录角色,IP段角色 然后,针对当前用户设置IP,可以设置多IP, 在用户登录的时候,判断用户是否存在于IP段,如果存在,验证当前登录IP是否属于规定的IP,否:登录失败,是:登录成功,进入IP段角色 这个功能的增加,是企业为了让系统只能在公司访问,或者固定IP才能访问而设计的; 只是扩展.没有实际改进. |
|
返回顶楼 | |
浏览 14980 次