快速业务通道

ASP.NET基于角色的窗体安全认证机制

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

简介:

ASP.NET 中窗体认证是一个功能非常强大的特性,只需要很少的代码就可以实现一个简单的平台无关的安全认证系统。

但是,如果你需要一个更复杂更有效的认证机制,那么你就要把众多用户分成用户群组,以利用它的灵活性。Windows 集成认证提供了这种认证机制,但它使用的是 NTLM,即Windows NT LAN Manager,因而它不是跨平台的。现在越来越多的人使用 Linux 系统,而 Mozilla Forefox 浏览器用户也越来越多,我们肯定不能把这些人拒之门外,因此我们寻求另外的认证机制。有两个选择:一是为网站划分多个区域,提供多个登录页面,强迫用户一个一个的去注册和登录;二是把用户分组,并且限制特定用户组对某页面或者某区域访问的权限。后者当然是更好的选择。通过分配角色给各个用户,我们能够实现这种功能。

微软为.NET平台留下了窗体认证中基于角色的认证机制,但是我们必须自己去实现它。本文力求覆盖窗体认证中基于角色的认证机制的一些基本的东西,比如它的概念,它的实现,如何在Web应用程序中应用等。

必要准备:

我们首先要建立一个数据库,一个Web应用项目,几个不同安全级别的机密目录,以及几个ASP.NET页面。当然你也可以在你现有的Web应用项目中添加这些。

1、创建数据库

首先要选择你需要使用的数据库管理系统 DBMS。本文使用 SQL Server 2000。

在实际应用项目的数据库中,一般都会有用户数据表 Users,它可能包括用户唯一标记:UserID,用户名:UserName,密码:Password,用户的邮件地址:Email,用户所在城市:City,用户登录次数 LoginCount 等。可以通过创建一个 UserInRoles 数据表(一般可以包括两个字段,用户名:UserName,用户角色:UserRoles)来实现为用户分配角色。

为了简单,我只创建一个 Users 数据表,它有3个字段,用户名 UserName,密码 Password,用户角色 UserRoles。创建表之前,你要选择数据库,或者创建一个新的数据库。要创建一个新的命名为WebSolution的数据库 ,只需要简单的SQL语句:

程序代码

Create DATABASE WebSolution

GO

要选择一个叫msdb的数据库,可以使用SQL语句:

程序代码

USE msdb

GO

接下来,我们创建刚才提到的 Users 数据表,SQL 脚本如下:

程序代码

Create TABLE Users
(
UserName nvarchar(100) CONSTRAINT PK_UserName PRIMARY KEY,
Password nvarchar(150),
UserRoles nvarchar(100)
)

可以为这个表创建索引 Credentials,SQL语句如下:

程序代码

Create INDEX Credentials ON Users
(
UserName,
Password
)

是否创建索引是可选的,由你自己决定。索引的好处和坏处请参考相关资料。

然后我们为这个Users数据库添加数据。角色名称由你自己自由选择,但是最好用有意义的名称,比如

"Administrator"(顶级管理员),"Manager"(管理员),"Member"(加盟成员),"User"(普通用户)等。例如:

UserName|Password|Roles
"willmove"|"pwd123"|"Administrator,User"
"amuhouse"|"pwd123"|"User"

其SQL语句是:

程序代码

--注意 ''45CB41B32DCFB917CCD8614F1536D6DA'' 是 ''pwd123'' 使用 md5 加密后的字符串

Insert INTO Users(UserName,Password,UserRoles) VALUES (''willmove'',''45CB41B32DCFB917CCD8614F1536D6DA'',''Administrator,User'')
GO
Insert INTO Users(UserName,Password,UserRoles) VALUES (''amuhouse'',''45CB41B32DCFB917CCD8614F1536D6DA'',''User'')
GO

要注意的是角色 Roles 是大小写敏感的,这是因为在 Web.config 文件中是大小写敏感的。现在我们为实现这个安全认证机制创建几个必要的页面。

首先是用户登录页面 Login.aspx

如果还

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号