C#中FormsAuthentication用法实例

下面是关于“C#中FormsAuthentication用法实例”的完整攻略。

一、什么是FormsAuthentication

FormsAuthentication 是 ASP.NET 提供的一种 Forms 身份验证机制,它使用基于 Cookie 的认证方式来验证用户身份。

在使用 FormsAuthentication 时我们需要进行以下几步:

  1. 创建用户验证后存储到 Cookie 里的票据(token)。该票据包括用户标识(userid)等用户信息。

  2. 询问 ASP.NET 是否已验证用户。

  3. 对于需要验证的页面,反射的检查用户票据是否存在。

二、如何使用FormsAuthentication

在使用 FormsAuthentication 时,我们可以按照以下几个步骤进行操作:

1. 向 Web.config 文件中添加以下代码:

<configuration>
  <appSettings>
    <add key="ValidationKey" value="你的密钥" />
  </appSettings>
  <system.web>
    <authentication mode="Forms" />
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
  <system.webServer>
    <modules>
      <remove name="FormsAuthenticationModule" />
      <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />
    </modules>
    <handlers>
      <remove name="FormsAuthentication" />
      <add name="FormsAuthentication" path="*.aspx" verb="GET,HEAD,POST" type="System.Web.Security.FormsAuthenticationModule" preCondition="integratedMode" />
    </handlers>
  </system.webServer>
</configuration>

2. 对用户进行身份验证

我们可以像下面这样,建立登录页面,将用户名和密码通过 Post 方式传递给服务器端进行验证,并创建一个身份验证票证:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    string userName = txtUserName.Text.Trim();
    string password = txtPassword.Text.Trim();

    // 此处进行验证,验证成功后创建一个票证
    if (userName == "user" && password == "123")
    {
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
            1, // version
            userName, // user name
            DateTime.Now, // issue time
            DateTime.Now.AddMinutes(30), // expires
            false, //persist
            "your custom data"); //other data

        string encTicket = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
        Response.Cookies.Add(cookie);
        Response.Redirect("~/Default.aspx");
    }
    else
    {
        lblMsg.Text = "用户名或密码错误!";
    }
}

3. 在需要验证的页面上进行验证

我们可以在需要验证的页面上,使用以下方法进行身份验证:

if (!Request.IsAuthenticated)
{
    Response.Redirect("Login.aspx");
}

4. 退出登录

我们可以在退出登录或注销的方法中,删除票证即可退出登录。

FormsAuthentication.SignOut();

三、示例说明

示例一:形式简单的登录页面

以 Windows Form 程序为例,在登录窗口上设计两个文本控件(输入用户名和密码)、一个按钮,以及一个标签控件。

在输入用户名和密码后,单击“登录”按钮,如果用户名和密码完成一致,将跳转到本项目中的 Default.aspx 默认页面。

登录窗口的代码如下:

private void btnLogin_Click(object sender, EventArgs e)
{
    string userName = txtUserName.Text.Trim();
    string password = txtPassword.Text.Trim();

    // 此处进行验证,验证成功后创建一个票证
    if (userName == "user" && password == "123")
    {
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
            1, // version
            userName, // user name
            DateTime.Now, // issue time
            DateTime.Now.AddMinutes(30), // expires
            false, //persist
            "your custom data"); //other data

        string encTicket = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
        Response.Cookies.Add(cookie);
        Response.Redirect("~/Default.aspx");
    }
    else
    {
        lblMsg.Text = "用户名或密码错误!";
    }
}

示例二:ASP.NET Web应用

如果你正在编写一个 ASP.NET 的 Web 应用程序,可以按照以下步骤来使用 FormAuthentication:

  1. 在 Web.config 文件中添加以下内容:
<configuration>
  <system.web>
    <authentication mode="Forms" >
      <forms name=".MyFormAuthentication" loginUrl="~/Login.aspx" timeout="30" slidingExpiration="true"></forms>
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>
</configuration>
  1. 在 Login.aspx 文件中添加以下内容:
protected void btnSubmit_Click(object sender, EventArgs e)
{
    string userName = txtUserName.Text.Trim();
    string password = txtPassword.Text.Trim();

    // 此处进行验证,验证成功后创建一个票证
    if (userName == "user" && password == "123")
    {
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
            1, // version
            userName, // user name
            DateTime.Now, // issue time
            DateTime.Now.AddMinutes(30), // expires
            false, //persist
            "your custom data"); //other data

        string encTicket = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
        Response.Cookies.Add(cookie);
        Response.Redirect(FormsAuthentication.DefaultUrl);
    }
    else
    {
        lblMsg.Text = "用户名或密码错误!";
    } 
}
  1. 在需要验证的页面中进行验证:
if (User.Identity.IsAuthenticated)
{
    //获取当前用户标识
    string userName=User.Identity.Name;
}
else
{
    Response.Redirect("~/Login.aspx");
}

这就是使用 FormsAuthentication 的简单示例,它使得开发人员可以轻易地构建身份验证和授权应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中FormsAuthentication用法实例 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • ASP.NET 2.0中的数据操作之八:使用两个DropDownList过滤的主/从报表

    下面我将详细讲解“ASP.NET 2.0中的数据操作之八:使用两个DropDownList过滤的主/从报表”攻略: 简介 在ASP.NET 2.0中,使用两个DropDownList过滤的主/从报表非常常见。这种形式的报表,允许用户通过选择主报表中的某个选项,从而动态变更从报表中的数据。本文将介绍如何使用两个DropDownList来过滤和呈现报表数据。 步…

    C# 2023年5月31日
    00
  • C# WPF上位机实现和下位机TCP通讯的方法

    下面是对于“C# WPF上位机实现和下位机TCP通讯的方法”的完整攻略: 1. 概述 要实现 C# WPF 上位机和下位机(例如单片机)之间的 TCP 通讯,可以分为以下三个步骤:1. 建立 TCP 连接2. 实现数据的发送和接收3. 关闭 TCP 连接 这三个步骤的具体实现细节将在下面讨论,示例将基于 C# 语言和 WPF 框架。 2. 建立 TCP 连接…

    C# 2023年5月15日
    00
  • ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法

    ASP.NET输出PNG图片时出现GDI+一般性错误,通常表示出现了一些问题导致服务器无法正常处理图像。以下是解决该问题的完整攻略: 1. 了解GDI+错误 首先,我们需要了解GDI+错误是什么,以及为什么会出现。GDI+是Windows平台下的一种图像库,ASP.NET使用GDI+来生成和处理图像。当出现GDI+错误时,通常会伴随着一些错误消息,如“一般性…

    C# 2023年6月6日
    00
  • 关系型数据库和非关系型数据库概述与优缺点对比

    关系型数据库和非关系型数据库概述与优缺点对比 概述 关系型数据库和非关系型数据库是两种不同的数据库类型。关系型数据库是指使用关系模型来组织数据的数据库,而非关系型数据库则是指使用其他数据模型来组织数据的数据库。关系型数据库最常见的代表是 MySQL、Oracle、SQL Server 等,而非关系型数据库最常见的代表是 MongoDB、Redis、Cassa…

    C# 2023年5月17日
    00
  • C# CSV文件读写的实现

    C# CSV文件读写的实现攻略 CSV(Comma Separated Values)是一种常用的文件格式,以逗号作为分隔符并且每行数据独占一行,适合于数据交换和数据存储。下面是实现CSV文件读写的步骤。 步骤1: 引入CSV文件格式处理库 C#中有很多好用的CSV文件格式处理库可以选择,比如:CsvHelper、LINQ to CSV等,我这里以CsvHe…

    C# 2023年6月1日
    00
  • 如何在ASP.NET Core类库项目中读取配置文件详解

    如何在ASP.NET Core类库项目中读取配置文件详解 在ASP.NET Core中,读取配置文件是非常常见的操作。本攻略将提供详细的步骤和示例说明,演示如何在ASP.NET Core类库项目中读取配置文件。 步骤 步骤1:创建一个新的ASP.NET Core类库项目 首先,需要创建一个新的ASP.NET Core类库项目。可以使用以下命令在命令行中创建一…

    C# 2023年5月17日
    00
  • JS实现图片放大缩小的方法

    实现图片放大缩小的方法主要可以通过JS来实现。下面是JS实现图片放大缩小的方法的完整攻略: 一、为需要放大缩小的图片添加标签属性 首先在需要进行放大缩小的图片中添加data-zoom属性。例如: <img src="https://example.com/example.jpg" data-zoom="https://ex…

    C# 2023年6月8日
    00
  • VBS ArrayList Class vbs中的数组类

    VBS ArrayList Class ArrayList是VBScript中的一个内置对象,可以用于方便地管理一个动态的大小的数组,通常用于存储、排序和搜索大量数据。 创建ArrayList对象 下面是如何创建一个空的ArrayList对象的示例: Dim list Set list = CreateObject("System.Collecti…

    C# 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部