日期:2014-05-19  浏览次数:20402 次

|M| 500分第二贴:求做一个Web系统的权限的编程思想和数据库设计和具体实现(大家看看我设计的表)
Red_angelX(八戒)说:
用户表里面设计1个或者N个权限列,对应每个操作   1   0
这样可以对应每个操作都记录是否有权限-_-#

这样的话只对用户组来说是可以的,但现在我是对用户--> 角色--> 模块得到权限

以下是我的表
模块表
ID       模块名
1         汽车操作
2         火车操作
模块项目表
id       项目名
1         华南汽车票
2         华北汽车票
模块相应命令表
id     模块ID   项目ID     操作命令名
1       1             1               查看
2       1             2               下单

角色表
ID       角色
1         操作员
2         汽车操作员

角色操作设置
ID   角色ID     模块相应命令ID   是否可操作
1     1               1                             1
2     1               2                             0

用户角色设置
ID     用户ID     拥有角色ID
1       107           1
2       107           2

然后用页面命令前用
Authority(模块命令ID)==0?return;


public   static   Authority(Int   模块命令ID)
{
        return   sql查询当前用户相应模块命令ID的值
}

大家看看这样可不可以
我感觉应该可行,
但主要的是当用户权限数据写下来的时候就没有办法更改了


2

------解决方案--------------------
/****** 对象: Table [dbo].[TB_ActionType] 脚本日期: 03/23/2007 15:10:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TB_ActionType](
[ActionTypeID] [smallint] IDENTITY(1,1) NOT NULL,
[ActionName] [nvarchar](10) NOT NULL,
[ActionRemark] [nvarchar](100) NULL,
CONSTRAINT [TB_ActionType_PK] PRIMARY KEY CLUSTERED
(
[ActionTypeID] 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
/****** 对象: Table [dbo].[TB_FunctionAction] 脚本日期: 03/23/2007 15:10:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TB_FunctionAction](
[FAID] [int] IDENTITY(1,1) NOT NULL,
[ActionTypeID] [smallint] NOT NULL,
[FunID] [varchar](50) NULL,
CONSTRAINT [TB_FunctionAction_PK] PRIMARY KEY CLUSTERED
(
[FAID] 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
SET ANSI_PADDING OFF
GO
/****** 对象: Table [dbo].[TB_SysFunctions] 脚本日期: 03/23/2007 15:10:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TB_SysFunctions](
[FunID] [varchar](50) NOT NULL,
[FunName] [nvarchar](100) NOT NULL,
[ParentID] [varchar](50) NULL,
[PagePath] [nvarchar](200) NULL,
[IsMenu] [smallint] NULL,
[Remark] [nvarchar](100) NULL,
CONSTRAINT [TB_SysFunctions_PK] PRIMARY KEY CLUSTERED