• 通用权限系统设计——第二章


    第一章我们说了权限,地址为:http://www.cnblogs.com/luxianai/archive/2012/03/16/Permission.html,但是没有用到中间表,今天我们来说说使用中间来做,这样查询将会更加方便,具体如下:

    分别有五张表,Users(用户表)、Modules(模块表)、Roles(角色表)、UserRoles(用户角色表)、RoleModules(角色模块表)

    最后有SQL创建表或表数据的脚本,

    表结构如下:

    模块表:

    用户表,此表中的RoleID不存在了,将用中间表来呈现:

    角色表:此表中的ModuleID不存在了,也将用中间表来呈现:

    用户角色表:

    角色模块表:

    表中的数据如下:

    模块表中的数据保持不变:


    用户表数据:


    角色表数据:

    用户角色表数据:用户编号1角色是管理员,特别介绍一下用户编号为4的,它有两个角色


    角色模板表数据:(角色1用户所有权限,角色2和3分别有部分权限)



    依然我们分别用admin 1 2 3来登录,获取所属的角色和模块:

    然后根据登录用户获取模块


    用中间表来查询,获取的数据相对来说要要简单多了。好,今天也到此为止,下期我们将讨论的是模块的权限功能,下面是数据库脚本:

    View Code
    if exists (select * from sysobjects where id = OBJECT_ID('[Modules]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) 

    DROP TABLE [Modules]



    CREATE TABLE [Modules] (

    [ModuleID] [int] IDENTITY (1, 1) NOT NULL,

    [ModuleName] [varchar] (50) NOT NULL,

    [ParentID] [int] NOT NULL DEFAULT (0),

    [LinkUrl] [varchar] (200) NULL,

    [ModuleSrot] [int] NULL,

    [ModuleVisible] [bit] NULL DEFAULT (1))



    ALTER TABLE [Modules] WITH NOCHECK ADD CONSTRAINT [PK_Modules] PRIMARY KEY NONCLUSTERED ( [ModuleID] )

    SET IDENTITY_INSERT [Modules] ON



    INSERT [Modules] ([ModuleID],[ModuleName],[ParentID],[ModuleSrot],[ModuleVisible]) VALUES ( 1,N'用户管理',0,1,1)

    INSERT [Modules] ([ModuleID],[ModuleName],[ParentID],[LinkUrl],[ModuleSrot],[ModuleVisible]) VALUES ( 2,N'添加用户',1,N'AddUser.aspx',1,1)

    INSERT [Modules] ([ModuleID],[ModuleName],[ParentID],[LinkUrl],[ModuleSrot],[ModuleVisible]) VALUES ( 3,N'用户列表',1,N'UserList.aspx',2,1)

    INSERT [Modules] ([ModuleID],[ModuleName],[ParentID],[ModuleSrot],[ModuleVisible]) VALUES ( 4,N'角色管理',0,2,1)

    INSERT [Modules] ([ModuleID],[ModuleName],[ParentID],[LinkUrl],[ModuleSrot],[ModuleVisible]) VALUES ( 5,N'添加角色',4,N'AddRole.aspx',1,1)

    INSERT [Modules] ([ModuleID],[ModuleName],[ParentID],[LinkUrl],[ModuleSrot],[ModuleVisible]) VALUES ( 6,N'角色列表',4,N'RoleList.aspx',2,1)



    SET IDENTITY_INSERT [Modules] OFF

    if exists (select * from sysobjects where id = OBJECT_ID('[RoleModules]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)

    DROP TABLE [RoleModules]



    CREATE TABLE [RoleModules] (

    [RoleID] [int] NOT NULL,

    [ModuleID] [int] NOT NULL)



    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 1,1)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 1,2)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 1,3)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 1,4)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 1,5)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 1,6)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 2,1)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 2,2)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 2,3)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 3,4)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 3,5)

    INSERT [RoleModules] ([RoleID],[ModuleID]) VALUES ( 3,6)

    if exists (select * from sysobjects where id = OBJECT_ID('[Roles]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)

    DROP TABLE [Roles]



    CREATE TABLE [Roles] (

    [RoleID] [int] NOT NULL,

    [RoleName] [varchar] (20) NOT NULL,

    [Descriptions] [varchar] (50) NOT NULL)



    ALTER TABLE [Roles] WITH NOCHECK ADD CONSTRAINT [PK_Roles] PRIMARY KEY NONCLUSTERED ( [RoleID] )

    INSERT [Roles] ([RoleID],[RoleName],[Descriptions]) VALUES ( 1,N'管理员',N'拥有所有权限')

    INSERT [Roles] ([RoleID],[RoleName],[Descriptions]) VALUES ( 2,N'二级管理员',N'拥有用户管理权限')

    INSERT [Roles] ([RoleID],[RoleName],[Descriptions]) VALUES ( 3,N'三级管理员',N'拥有角色管理权限')

    if exists (select * from sysobjects where id = OBJECT_ID('[UserRoles]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)

    DROP TABLE [UserRoles]



    CREATE TABLE [UserRoles] (

    [UserID] [int] NOT NULL,

    [RoleID] [int] NOT NULL)



    INSERT [UserRoles] ([UserID],[RoleID]) VALUES ( 1,1)

    INSERT [UserRoles] ([UserID],[RoleID]) VALUES ( 2,2)

    INSERT [UserRoles] ([UserID],[RoleID]) VALUES ( 3,3)

    INSERT [UserRoles] ([UserID],[RoleID]) VALUES ( 4,2)

    INSERT [UserRoles] ([UserID],[RoleID]) VALUES ( 4,3)

    if exists (select * from sysobjects where id = OBJECT_ID('[Users]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)

    DROP TABLE [Users]



    CREATE TABLE [Users] (

    [UserID] [int] IDENTITY (1, 1) NOT NULL,

    [UserName] [varchar] (20) NOT NULL,

    [Password] [varchar] (50) NOT NULL)



    ALTER TABLE [Users] WITH NOCHECK ADD CONSTRAINT [PK_Users] PRIMARY KEY NONCLUSTERED ( [UserID] )

    SET IDENTITY_INSERT [Users] ON



    INSERT [Users] ([UserID],[UserName],[Password]) VALUES ( 1,N'admin',N'123123')

    INSERT [Users] ([UserID],[UserName],[Password]) VALUES ( 2,N'admin1',N'123123')

    INSERT [Users] ([UserID],[UserName],[Password]) VALUES ( 3,N'admin2',N'123123')

    INSERT [Users] ([UserID],[UserName],[Password]) VALUES ( 4,N'admin3',N'123123')



    SET IDENTITY_INSERT [Users] OFF
  • 相关阅读:
    20个Flutter实例视频教程-第07节: 毛玻璃效果制作
    20个Flutter实例视频教程-第06节: 酷炫的路由动画-2
    20个Flutter实例视频教程-第05节: 酷炫的路由动画-1
    20个Flutter实例视频教程-第04节: 不规则底部工具栏制作-2
    20个Flutter实例视频教程-第03节: 不规则底部工具栏制作-1
    20个Flutter实例视频教程-第02节: 底部导航栏制作-2
    hdu5371Hotaru's problem manacher算法
    怎样解除内容审查程序的password
    SQLite -- 嵌入式关系型数据库
    PIC18F4520 + NRF24L01
  • 原文地址:https://www.cnblogs.com/luxianai/p/tyqx.html
Copyright © 2020-2023  润新知