最近在搞系统权限设计,采用RBAC(基于角色的权限控制)模型.
看到一篇文章,提到'参数化的RBAC'
觉得控制的权限粒度比较细.
公司组织结构比如:
       总部
         |
---------------------
|                    |
华东区             华北区
...                  |
            ------------------
           |         |       |
       天津分公司  北京..    石家庄..比如:  公司经理这个角色,使用参数
       例如对于机构这个参数的管理,我们可以用“/”表示总部,“/HBDQ/”表示华北大区,“/HBDQ/BJFGS/”表示北京分公司
       需要指派给user1两个角色:北京经理,天津经理。在引入参数之后,则u只有一个角色实例:(经理,{北京,天津})
 看上去这种方式不错.不过我看的不是很明白,也不清楚怎么应用,有没有人用过这种方式,
介绍一下应用的经验?

解决方案 »

  1.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PowerSetting]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[PowerSetting]
    GOCREATE TABLE [dbo].[PowerSetting] (
        [PowerSettingID] [int] IDENTITY (1, 1) NOT NULL ,            --id
        [ParentID] [int] NOT NULL ,                        --父节点id
        [Description] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,    --菜单描述内容
        [Icon] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,        --要显示图标
        [Url] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,        --url
        [Target] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,        --_self,_blank等
        [CreateByID] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,    --创建人id
        [CreateON] [datetime] NULL ,                    --创建日期
        [IsEnabled] [bit] NULL ,                        --是否可用
        [IsBoot] [int] NULL                         --是不是根节点;1是其他不是
    ) ON [PRIMARY]
    GO
      

  2.   

    我的系统不大,权限挺简单的,就是数据库里一张表
    用户名        密码              权限
    张三          ****              定单/下定单/所有这样就表明张三具有定单下属的下定单下属的所有权限,这样当张三进去系统后,进入每个功能前我都根据这个string去判断张三是否有权限访问当前功能(重载page或者在isnotpostback里验证),如果你想做细一点,对每个控件都进行权限控制,那就需要重载控件(最常用的是button)来实现了,顺便说一句,重载控件用.net很不方便,用struts似乎方便多了