当前位置:编程学习 > C#/ASP.NET >>

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

答案:     这篇文章引用到了Microsoft .NET类库中的以下名空间:
  System.Data.SqlClient
  System.Web.Security
  -------------------------------
  任务:
  摘要: 
   1.要求
       2.用Visual C#.NET 创建一个ASP.NET 应用程序
   3.在Web.config文件里配置安全设置
   4.创建一个数据库表样例来存放用户资料
   5.创建Logon.aspx页面
   6.编写事件处理代码来验证用户身份
   7.创建一个Default.aspx页面
   8.附加提示
   参考文章
  -------------------------------
  摘要
   这篇文章示范了如何实现通过数据库存储用户信息来实现基于表单的验证.
  (一)要求
   需要以下工具来实现
   1.Microsoft Visual Studio.NET
   2.Microsoft Internet Information Services(IIS) version 5.0 或者更新
   3.Microsoft SQL Server
  (二)用C#.NET创建ASP.NET应用程序
   1.打开Visual Studio.NET
   2.建立一个新的ASP.NET Web应用程序,并且指定名称和路径.
  (三)在Web.config文件里配置安全设置
  这一节示范了如何通过添加和修改<authentication>和<authorization>节点来配置ASP.NET应用程序以实现基于表单的验证.
   1.在解决方案窗口里,打开Web.config文件.
   2.把authentication模式改为Forms(注:默认为windows)
   3.插入<Forms>标签,并且填入适当的属性.(请链接到在文章最后列出的MSDN文档或者QuickStart文档来查看这些属性)先复制下面的代码,接着再把它粘贴到<authentication>节:
  
  <authentication mode="Forms">
   <form name=".ASPXFORMSDEMO" loginUrl="logon.aspx" protection="All" path="/" timeout="30"/>
  </authentication>
  (注:如果不指定loginUrl,默认为default.aspx)
  
   4.通过加入以下节点实现拒绝匿名访问:
  <authentication>
   <deny users="?"/>
   <allow users="*"/>
  </authentication>
  
  (四)创建一个数据库表样例来存放用户资料
  这一节示范了如何创建一个示例数据库来存放用户名,密码,和用户角色.如果你想要实现基于角色的安全就有必要在数据库中添加一个存放用户角色的字段.
   1.打开记事本。
   2.把下面这段脚本复制到记事本然后保存:
  
  if exists (select * from sysobjects where id =
  object_id(N'[dbo].[Users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  drop table [dbo].[Users]
  GO
  CREATE TABLE [dbo].[Users] (
   [uname] [varchar] (15) NOT NULL ,
   [Pwd] [varchar] (25) NOT NULL ,
   [userRole] [varchar] (25) NOT NULL ,
  ) ON [PRIMARY]
  GO
  ALTER TABLE [dbo].[Users] WITH NOCHECK ADD
   CONSTRAINT [PK_Users] PRIMARY KEY NONCLUSTERED
   (
   [uname]
   ) ON [PRIMARY]
  GO
  
  INSERT INTO Users values('user1','user1','Manager')
  INSERT INTO Users values('user2','user2','Admin')
  INSERT INTO Users values('user3','user3','User')
  GO
   3.打开Microsoft SQL Server,打开查询分析器,在数据库列表里选择Pubs数据库,然后把上面的脚本粘贴过来,运行。这时会在Pubs数据库里创建一个将会在这个示例程序中用到的示例用户表。
  (五)创建Logon.aspx页面
   1.在已创建好的项目里创建一个新的Web 窗体,名为Logon.aspx。
   2.在编辑器里打开Logon.aspx,切换到HTML视图。
   3.复制下面代码,然后在编辑菜单里“选择粘贴为HTML”选项,插入到<form>标签之间。
  <h3>
   <font face="Verdana">Logon Page</font>
  </h3>
  <table>
   <tr>
   <td>Email:</td>
   <td><input id="txtUserName" type="text" runat="server"></td>
   <td><ASP:RequiredFieldValidator ControlToValidate="txtUserName"
   Display="Static" ErrorMessage="*" runat="server"
   ID="vUserName" /></td>
   </tr>
   <tr>
   <td>Password:</td>
   <td><input id="txtUserPass" type="password" runat="server"></td>
   <td><ASP:RequiredFieldValidator ControlToValidate="txtUserPass"
   Display="Static" ErrorMessage="*" runat="server"
   ID="vUserPass" />
   </td>
   </tr>
   <tr>
   <td>Persistent Cookie:</td>
   <td><ASP:CheckBox id="chkPersistCookie" runat="server" autopostback="false" /></td>
   <td></td>
   </tr>
  </table>
  <input type="submit" Value="Logon" runat="server" ID="cmdLogin"><p></p>
  <asp:Label id="lblMsg" ForeColor="red" Font-Name="Verdana" Font-Size="10" runat="server" />
  
   这个页面用来显示一个登录表单以便用户可以提供他们的用户名和密码,并且记录到应用程序中。
   4.切换到设计视图,保存这个页面。
  
  (六)编写事件处理代码来验证用户身份
   下面这些代码是放在后置代码页里的(Logon.aspx.cs)
   1.双击Logon页面打开Logon.aspx.cs文件。
   2.在后置代码文件里导入必要的名空间:
   using System.Data.SqlClient;
   using System.Web.Security;
   3.创建一个ValidateUser的函数,通过在数据库中查找用户来验证用户的身份。(请改变菘饬幼址粗赶蚰愕氖菘猓?BR>private bool ValidateUser( string userName, string passWord )
  {
   SqlConnection conn;
   SqlCommand cmd;
   string lookupPassword = null;
  
   // Check for invalid userName.
   // userName must not be null and must be between 1 and 15 characters.
   if ( ( null == userName ) || ( 0 == userName.Length ) || ( userName.Length > 15 ) )
   {
   System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of userName failed." );
   return false;
   }
  
   // Check for invalid passWord.
   // passWord must not be null and must be between 1 and 25 characters.
   if ( ( null == passWord ) || ( 0 == passWord.Length ) || ( passWord.Length > 25 ) )
   {
   System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of passWord failed." );
   return false;
   }
  
   try
   {
   // Consult with your SQL Server administrator for an appropriate connection
   // string to use to connect to your local SQL Server.
   conn = new SqlConnection( "server=localhost;Integrated Security=SSPI;database=pubs" );
   conn.Open();
  
   // Create SqlCommand to select pwd field from users table given supplied userName.
   cmd = new SqlCommand( "Select pwd from users where uname=@userName", conn );
   cmd.Parameters.Add( "@userName", SqlDbType.VarChar, 25 );
   cmd.Parameters["@userName"].Value = userName;
  
   // Execute command and fetch pwd field into lookupPassword string.
   lookupPassword = (string) cmd.ExecuteScalar();
  
   //

上一个:在ASP.Net中应用javascript
下一个:ASP.NET极限:页面导航

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,