将不同的用户赋予不同角色,从而具有不同权限,是对用户进行分类管理的一个办法.而由此基于数据库的实现可参考如下实例.
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等等情况.便于以后扩展.