使用c#.net创建asp.net应用程序表单验证

打开 Visual Studio .NET。
新建 ASP.NET Web 应用程序,并指定应用程序的名称和位置。
在 Web.config 文件中配置安全设置

本部分演示了如何添加和修改<身份验证>和<授权>配置部分,以配置 ASP.NET 应用程序来使用基于表单的身份验证。
在项目资源管理器中,打开 Web.config 文件。
将身份验证模式更改为Forms(窗体)。
3.插入 标记,并填入相应的属性。(有关这些属性的详细信息,请参阅参考部分列出的 MSDN 文档或 QuickStart 文档。)复制以下代码,然后单击“编辑”菜单上的“粘贴为 HTML”,以粘贴文件 部分中的代码:

protection=“All” path=“/” timeout=“30” />

在 部分中拒绝匿名用户的访问(如下所示):

创建一个示例数据库表存储用户详细信息

本部演示了如何创建一个示例数据库表来存储用户的用户名、密码和角色。如果要将用户角色存储在数据库中并实现基于角色的安全性,则需要角色列。
在“开始”菜单上,单击“运行”,然后键入 notepad 以打开记事本。
突出显示以下 SQL 脚本代码,右键单击该代码,然后单击“复制”。在记事本中,单击“编辑”菜单上的“粘贴”以粘贴以下代码:
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 NOT NULL ,
[Pwd] varchar NOT NULL ,
[userRole] varchar 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

将该文件另存为 Users.sql。
在 Microsoft SQL Server 计算机上,在查询分析器中打开 Users.sql。在数据库列表中,单击“pubs”,然后运行该脚本。这将创建一个示例用户表,并使用此示例应用程序填充要使用的 Pubs 数据库中的该表。
创建 Logon.aspx 页

将一个新的 Web 窗体添加到名为 Logon.aspx 的项目中。
在编辑器中打开 Logon.aspx 页,并切换到 HTML 视图。
复制以下代码,然后使用“编辑”菜单上的“粘贴为 HTML”选项将代码插入到

标记之间:

Logon Page

Email:
Password:
Persistent Cookie:

此 Web 窗体用于向用户提供登录窗体,以便他们提供用于登录到应用程序的用户名和密码。
切换到“设计”视图并保存该页。
对事件处理程序编码,以便验证用户凭据

本部分介绍了位于代码隐藏页面 (Logon.aspx.cs) 的代码。
双击“Logon”打开 Logon.aspx.cs 文件。
导入代码隐藏文件中必需的命名空间:
using System.Data.SqlClient;
using System.Web.Security;

创建 ValidateUser 函数,以便通过查找数据库来验证用户凭据。(确保将连接字符串更改为指向数据库。)
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 [email protected]", 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();

    // Cleanup command and connection objects.
    cmd.Dispose();
    conn.Dispose();
}
catch ( Exception ex )
{
    // Add error handling here for debugging.
    // This error message should not be sent back to the caller.
    System.Diagnostics.Trace.WriteLine( "[ValidateUser] Exception " + ex.Message );
}

// If no password found, return false.
if ( null == lookupPassword )
{
    // You could write failed login attempts here to event log for additional security.
    return false;
}

// Compare lookupPassword and input passWord, using a case-sensitive comparison.
return ( 0 == string.Compare( lookupPassword, passWord, false ) );

}

可使用两种方法之一生成窗体身份验证 Cookie,并将用户重定向到 cmdLogin_ServerClick 事件中的相应页。为两种情形都提供了示例代码。可根据需要使用其中的一个。
调用 RedirectFromLoginPage 方法,以便自动生成窗体身份验证 Cookie,并将用户重定向到 cmdLogin_ServerClick 事件中的相应页:
private void cmdLogin_ServerClick(object sender, System.EventArgs e)
{
if (ValidateUser(txtUserName.Value,txtUserPass.Value) )

FormsAuthentication.RedirectFromLoginPage(txtUserName.Value,
    chkPersistCookie.Checked);
else
    Response.Redirect("logon.aspx", true);

}

生成身份验证票证,对其进行加密,创建 Cookie,将其添加到响应中并重定向用户。这样,您就可以更好地控制 Cookie 的创建方式了。在本例中还可包括自定义数据和 FormsAuthenticationTicket。
private void cmdLogin_ServerClick(object sender, System.EventArgs e)
{
if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
{
FormsAuthenticationTicket tkt;
string cookiestr;
HttpCookie ck;
tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now,
DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, “your custom data”);
cookiestr = FormsAuthentication.Encrypt(tkt);
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
if (chkPersistCookie.Checked)
ck.Expires=tkt.Expiration;

        ck.Path = FormsAuthentication.FormsCookiePath;

Response.Cookies.Add(ck);

string strRedirect;
strRedirect = Request[“ReturnUrl”];
if (strRedirect==null)
strRedirect = “default.aspx”;
Response.Redirect(strRedirect, true);
}
else
Response.Redirect(“logon.aspx”, true);
}

确保将以下代码添加到由 Web 窗体设计器生成的代码的 InitializeComponent 方法中。
this.cmdLogin.ServerClick += new System.EventHandler(this.cmdLogin_ServerClick);

创建一个 Default.aspx 页面

本部分创建了一个用户在进行身份验证后被重定向的测试页面。如果用户在没有先登录到应用程序的情况下浏览此页,则将他们重定向到登录页。
将现有 WebForm1.aspx 页重命名为 Default.aspx,并在编辑器中打开它。
切换到 HTML 视图,并将下面的代码复制到 标记之间:

此按钮用于注销窗体身份验证会话。
切换到“设计”视图并保存该页。
导入代码隐藏文件中必需的命名空间:
using System.Web.Security;

双击 SignOut 打开代码隐藏页 (Default.aspx.cs),并在 cmdSignOut_ServerClick 事件处理程序中复制以下代码:
private void cmdSignOut_ServerClick(object sender, System.EventArgs e)
{
FormsAuthentication.SignOut();
Response.Redirect(“logon.aspx”, true);
}

请确保以下代码已添加到 Web 窗体设计器生成的代码的 InitializeComponent 方法中:
this.cmdSignOut.ServerClick += new System.EventHandler(this.cmdSignOut_ServerClick);

保存并编译项目。现在,您就可以执行该应用程序了。

时间: 2024-10-12 20:41:53

使用c#.net创建asp.net应用程序表单验证的相关文章

asp.net forms 表单验证 实现跨域共享cookie(即SSO,单点登录(在二级域名下))

1.前提: 需要做一个单点登录,使用asp.net自带的表单验证(FormsAuthentication) 配置文件怎么写,如下(基本的): <authentication mode="Forms"> <forms loginUrl="~/user/login" enableCrossAppRedirects="true" timeout="3600" name="qz.bbs" cook

ASP.NET MVC 表单验证

ASP.NET MVC 框架验证每个传递给操作的数据是否有效,控制器操作可以通过查询ModelState来检查请求是否有效,例如,保存有效数据到数据库.后缀返回包含错误提示信息的原始表单给用户.这里是AuctionsController.Create操作,用于判断ModelState的有效性后进行“保存或者返回” 操作: [HttpPost] public ActionResult Create(Auction auction) { if(ModelState.IsValid) { var db

Asp.net MVC中表单验证属性的使用

用于检查是否有输入值 :RequiredFieldValidator(必须字段验证)按设定比较两个输入 :CompareValidator(比较验证) 输入是否在指定范围 :RangeValidator(范围验证) 正则表达式验证控件 :RegularExpressionValidator(正则表达式验证) 自定义验证控件 :CustomValidator(自定义验证) 总结验证结果 :ValidationSummary(验证总结) 1.RequiredFieldValidator(必填字段验证

抛开visual studio,纯手工创建asp.net mvc遇到的问题

脱离Visual Studio,只用文本编辑器..NET Framework.IIS Express创建ASP.NET MVC应用时,需要精简~/View目录下web.config文件内容,之前创建的asp.net mvc hellow world应用一切正常,在清理web.config文件后,出现如下错误: The view must derive from WebViewPage, or WebViewPage<TModel>. (The view at ‘~/Views/home/ind

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添加一个User类: namespace MyFirstApp.Models { public class User { public int ID { get; set; } public string Name { get; set; } public string Email { get; se

ASP.NET MVC使用Bootstrap系列(5)——创建ASP.NET MVC Bootstrap Helpers

序言 ASP.NET MVC允许开发者创建自定义的HTML Helpers,不管是使用静态方法还是扩展方法.一个HTML Helper本质上其实是输出一段HTML字符串. HTML Helpers能让我们在多个页面上公用同一段HTML标记,这样不仅提高了稳定性也便于开发者去维护.当然对于这些可重用的代码,开发者也方便对他们进行单元测试.所以,创建ASP.NET MVC Bootstrap Helpers是及其有必要的. 内置的HTML Helpers ASP.NET MVC内置了若干标准HTML

Yeoman generators 创建 ASP.NET 应用程序

Yeoman generators 创建 ASP.NET 应用程序 上一篇:<Windows 搭建 .NET 跨平台环境并运行应用程序> 阅读目录: Install Node.js Install yeoman-generators Create ASP.NET Web Application Run ASP.NET Web Application 上一篇中的控制台应用程序,代码是我们进行手写的,就两个文件:HelloWorld.cs 和 project.json,非常简单,不使用 Visua

在Mac下创建ASP.NET Core Web API

在Mac下创建ASP.NET Core Web API 在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉及的内容相当全面,属于那种大而全的知识仓库,不太适合初学者,很容易让人失去重要,让人掉入到具体的细节之中. 对于大多数人来讲开发语言只是工具,程序员都有一个通病,就是死磕工具,把工具学深.我认为在工具上没有必要投入太多时间,以能高效地完成日常的

在Windows Azure上创建ASP.NET MVC网站

本篇体验在Windows Azure上创建ASP.NET MVC网站. →登录到Windows Azure管理门户 →点击左下方的"新建" →点击"自定义创建",在界面中填写如下:注意:用户名就是服务器的管理员登录名.点击确定. →点击网站名称. →点击右侧的"下载发布配置文件",把后缀名为PublishSettings的文件保存到本地硬盘上,记住保存的位置. →到这里下载Visual Studio 2012的SDK,并安装,需要比较长的时间.