泓七人生

-----坚持就是胜利

一种基于角色的安全性的数据表设计

将不同的用户赋予不同角色,从而具有不同权限,是对用户进行分类管理的一个办法.而由此基于数据库的实现可参考如下实例.

 

1.users用户表

USE [数据库]
GO
/****** Object:  Table [dbo].[Users]    Script Date: 05/17/2006 15:18:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Users](
 [UserId] [nvarchar](63) COLLATE Chinese_PRC_CI_AS NOT NULL,
 [Password] [nvarchar](63) COLLATE Chinese_PRC_CI_AS NOT NULL,
 [RoleId] [int] NOT NULL,
 CONSTRAINT [Users_PK] PRIMARY KEY CLUSTERED
(
 [UserId] ASC
) ON [PRIMARY]
) ON [PRIMARY]

GO
USE [Pkc_Demo]
GO
ALTER TABLE [dbo].[Users]  WITH CHECK ADD  CONSTRAINT [Roles_Users_FK1] FOREIGN KEY([RoleId])
REFERENCES [dbo].[Roles] ([RoleId])

2.roles数据表

USE [数据库]
GO
/****** Object:  Table [dbo].[Roles]    Script Date: 05/17/2006 15:21:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Roles](
 [RoleId] [int] NOT NULL,
 [RoleName] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
 [Description] [nvarchar](127) COLLATE Chinese_PRC_CI_AS NULL,
 CONSTRAINT [Roles_PK] PRIMARY KEY CLUSTERED
(
 [RoleId] ASC
) ON [PRIMARY]
) ON [PRIMARY]

3.一个roles表的实例

1 系统管理员帐户 系统管理员帐户
5 银行查询帐户 银行查询帐户
10 银行报告账户 银行报告账户
20 学校报告账户  

4.ID为什么是1,5,10,20我想这可能主要是为了以后增加方面,比如对于系统管理员账户可以生成相关的有多种权限的管理员,可以由1,2,3,....等等ID组成.如果对于其它10可以生成11,12,13,等帐户这样又可进行分组,而且便于编程.

所以推荐采用,1 ,10,20,30,40作为角色的ID的分组,如进一步细分就成了11,21等等情况.便于以后扩展.

阅读更多
上一篇sql server2005数据库类型一览表
下一篇常用数据表字段设计(来源于相关设计软件)
想对作者说点什么? 我来说一句

基于角色安全性技术示例

2010年10月29日 19KB 下载

没有更多推荐了,返回首页

关闭
关闭