`
z95001188
  • 浏览: 40739 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用户权限管理设计(数据库)

阅读更多

   由于项目需要!需要在一套现有系统上开发权限管理系统!

       先说说之前的权限是怎么管理的吧. 当时由于时间有限.所以只是临时管理权限

 

        首先数据库有一个权限字段. 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                         财务报表查询

            .

            .

 

         相关的.角色菜单表..关联 角色表 和 菜单表 不用的角色看到不同的菜单. 相互制约. 如:

                    用户管理 

                    角色管理

                    菜单管理

                    物流报表查询

                    短信发送

                    等等....

                   以上一系列菜单通过 不同的角色指定.             

 

 

                  用户角色表  关联  用户表  和 角色表  给不同的用户指定不同的角色. 如:

                    系统管理员

                    普通管理员

                    物流管理员 

                   以上三种角色... 通过用户角色表 多对多 关联用户表...

 

 

                 以上就是数据库表结构设计.

                 然后程序中只要开发设计即可(如果有好的建议希望能跟帖说出.谢谢!)

 

 

                 一下贴出我们项目中一些相关图

 

 

 

 

 

  • 大小: 22.6 KB
  • 大小: 72.9 KB
分享到:
评论
8 楼 z95001188 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才能访问而设计的;
      只是扩展.没有实际改进.
7 楼 xinshou 2009-12-03  
怎么不继续了。
6 楼 Rossalee 2009-12-03  
没下文儿了。
5 楼 laozhao 2009-12-02  
没有专门研究过权限管理,不清楚原来还分为:操作权限和数据权限。
在我看来这些都是不必。其实个人感觉可以通过事物码来解决问题。把所有的画面打开和数据库操作处理都写到business里面。对每一个处理方法添加一个唯一“事物码”。权限管理结合角色和权限等级,在调用每个方法的时候判断权限即可。
这样可以实现最大限度的自由设置。不过不方便管理。毕竟事物码是写在程序中的,没有在数据库中操作方便。
呵呵,只是初步想法,有兴趣可以一起讨论!
4 楼 sdnasky 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'
3 楼 hsbljyy 2009-10-16  
都是操作权限吧,数据权限呢?我对数据权限比较感兴趣。呵呵~网上很多操作权限的案例,貌似没有把数据权限讲得比较清楚的。期待楼主能拿出个比较完整的数据权限解决方案。
2 楼 pan19849529 2009-10-16  
最好能把代码贴出来看一下!
1 楼 pan19849529 2009-10-16  
楼主继续啊!

相关推荐

Global site tag (gtag.js) - Google Analytics