位置:海鸟网 > IT > ASP.NET >

在ASP.NET中如何用C#.NET实现基于表单的验证

这篇文章引用到了Microsoft.NET类库中的以下名空间:
System.Data.SqlClient
System.Web.Security
-------------------------------
任务:
摘要: 
1.要求
2.用VisualC#.NET创建一个ASP.NET应用程序
3.在Web.config文件里配置安全设置
4.创建一个数据库表样例来存放用户资料
5.创建Logon.aspx页面
6.编写事件处理代码来验证用户身份
7.创建一个Default.aspx页面
8.附加提示

参考文章
-------------------------------
摘要

这篇文章示范了如何实现通过数据库存储用户信息来实现基于表单的验证.

(一)要求

需要以下工具来实现

1.MicrosoftVisualStudio.NET
2.MicrosoftInternetInformationServices(IIS)version5.0或者更新
3.MicrosoftSQLServer
(二)用C#.NET创建ASP.NET应用程序
1.打开VisualStudio.NET
2.建立一个新的ASP.NET Web应用程序,并且指定名称和路径.

(三)在Web.config文件里配置安全设置

这一节示范了如何通过添加和修改<authentication>和<authorization>节点来配置ASP.NET应用程序以实现基于表单的验证.
1.在解决方案窗口里,打开Web.config文件.
2.把authentication模式改为Forms(注:默认为windows)
3.插入<Forms>标签,并且填入适当的属性.(请链接到在文章最后列出的MSDN文档或者QuickStart文档来查看这些属性)先复制下面的代码,接着再把它粘贴到<authentication>节:


<authenticationmode="Forms">
<formname=".ASPXFORMSDEMO"loginUrl="logon.aspx"protection="All"path="/"timeout="30"/>
</authentication>


(注:如果不指定loginUrl,默认为default.aspx)

4.通过加入以下节点实现拒绝匿名访问:


<authentication>
<denyusers="?"/>
<allowusers="*"/>
</authentication>

(四)创建一个数据库表样例来存放用户资料

这一节示范了如何创建一个示例数据库来存放用户名,密码,和用户角色.如果你想要实现基于角色的安全就有必要在数据库中添加一个存放用户角色的字段.

1.打开记事本。

2.把下面这段脚本复制到记事本然后保存:


ifexists(select*fromsysobjectswhereid=
object_id(N'[dbo].[Users]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
droptable[dbo].[Users]
GO
CREATETABLE[dbo].[Users](
[uname][varchar](15)NOTNULL,
[Pwd][varchar](25)NOTNULL,
[userRole][varchar](25)NOTNULL,
)ON[PRIMARY]
GO
ALTERTABLE[dbo].[Users]WITHNOCHECKADD
CONSTRAINT[PK_Users]PRIMARYKEYNONCLUSTERED
(
[uname]
)ON[PRIMARY]
GO

INSERTINTOUsersvalues('user1','user1','Manager')
INSERTINTOUsersvalues('user2','user2','Admin')
INSERTINTOUsersvalues('user3','user3','User')
GO

3.打开MicrosoftSQLServer,打开查询分析器,在数据库列表里选择Pubs数据库,然后把上面的脚本粘贴过来,运行。这时会在Pubs数据库里创建一个将会在这个示例程序中用到的示例用户表。

(五)创建Logon.aspx页面


1.在已创建好的项目里创建一个新的Web窗体,名为Logon.aspx。

2.在编辑器里打开Logon.aspx,切换到HTML视图。

3.复制下面代码,然后在编辑菜单里“选择粘贴为HTML”选项,插入到<form>标签之间。


<h3>
<fontface="Verdana">LogonPage</font>
</h3>
<table>
<tr>
<td>Email:</td>
<td><inputid="txtUserName"type="text"runat="server"></td>
<td><ASP:RequiredFieldValidatorControlToValidate="txtUserName"
Display="Static"ErrorMessage="*"runat="server"
ID="vUserName"/></td>
</tr>
<tr>
<td>Password:</td>
<td><inputid="txtUserPass"type="password"runat="server"></td>
<td><ASP:RequiredFieldValidatorControlToValidate="txtUserPass"
Display="Static"ErrorMessage="*"runat="server"
ID="vUserPass"/>
</td>
</tr>
<tr>
<td>PersistentCookie:</td>
<td><ASP:CheckBoxid="chkPersistCookie"runat="server"autopostback="false"/></td>
<td></td>
</tr>
</table>
<inputtype="submit"Value="Logon"runat="server"ID="cmdLogin"><p></p>
<asp:Labelid="lblMsg"ForeColor="red"Font-Name="Verdana"Font-Size="10"runat="server"/>