分享

系统权限的设计之简单设计

 贾朋亮博客 2014-01-24

工作时间也不长,但是总想写一些自己的收获。公司利用的技术也比较单纯,asp.net,js也不怎么需要用,唯一写的多的就是sql语句。

好了,废话不多说了,开始谈谈我在做项目中一些对系统权限的收获,不过很多都是项目中看到的,我就想自己重新做一遍。也许会有

很多的问题和考虑不全的地方,但是我还是要写出来,当做自己的一种学习罢了。

设计思路

    (1)用户表

           权限是根据登陆者不同而不同的,用户表就比较简单了,简单的表设计如下

    [user_no] [nvarchar](20) NOT NULL, //用户ID,主键
    [user_name] [nvarchar](20) NULL,
    [user_password] [nvarchar](20) NULL,

(2)权限列表

设置所有的权限,例如新增,修改,查询

 

    [action_id] [nvarchar](20) NULL,
    [action_name] [nvarchar](20) NULL

(3)功能表

          系统的功能是存在数据库中的,根据权限来获取部分功能,并展示。表设计如下:

 

复制代码
    [function_id] [nvarchar](20) NOT NULL,//功能id
    [function_brother_id] [int] NOT NULL,//相同功能的不同页面
    [function_name] [nvarchar](50) NULL,
    [function_url] [nvarchar](500) NULL,
    [function_level] [int] NULL,
    [function_sort] [int] NULL,
    [function_action] [nvarchar](100) NULL,
    [function_parent_id] [nvarchar](20) NULL,
    [function_inmenu] [bit] NULL,//是否在菜单中
复制代码

为什么有[function_brother_id],一个菜单里面的一个功能可能会有多个页面。例如一个用户页面,可能在功能里面叫用户信息,但是会涉及多个页面,每个页面都需要权限。
[function_inmenu]就是判断同功能里面菜单里链接是其中哪个页面(只能有一个)。

[function_action]是根据权限列表给每个功能赋给权限

(4)权限组

我们的权限是根据组来区分的。一个用户在一个组里面,那个组里面有哪几个功能,其中每个功能有哪几种权限。这就是我们的系统权限的核心了,不过比较简单。

    [group_id] [nvarchar](20) NOT NULL,
    [group_name] [nvarchar](50) NULL,

这里面存储权限组的基本信息,一般会默认有系统管理者和一般使用者。

(5)用户权限组

设定用户在哪个群组。我们目前的系统设计的是一个用户可以有多个组,但是我觉得一个用户设定一个群组就ok了。如果一个用户没有设定在哪个组,默认为一般使用者。

    [group_id] [nvarchar](20) NULL,
    [user_no] [nvarchar](20) NOT NULL,

(6)群组功能

设定每个群组里面有哪几个功能,每个功能有哪几种权限。

注意,功能表里面的权限与此处不同,可能一个功能有查询和删除权限,但是本群组里面的这个功能只有查询权限。

这个权限必须是在功能里面此功能所有的权限中。

 

    [group_id] [nvarchar](20) NOT NULL,
    [function_id] [nvarchar](20) NOT NULL,
    [group_action] [nvarchar](100) NULL,

 

表设计到此ok,算是比较简单的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多