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日

相关文章

  • LINQ基础之From和GroupBy子句

    下面给出详细的 “LINQ基础之From和GroupBy子句” 的攻略: From子句 from 子句用来指定数据源和创建一个范围变量,它负责查询和返回一个序列。 下面是一个示例,通过使用 from 子句从一个整数数组中选择所有大于 5 的数字: int[] numbers = { 2, 3, 5, 7, 11, 13 }; var result = fro…

    C# 2023年6月1日
    00
  • PowerShell中的加法运算详解

    那我就为您详细讲解一下“PowerShell中的加法运算详解”。 一、加法运算简介 在PowerShell中,加法运算使用“+”符号表示。加法运算可以完成两种类型的操作: 两个数字相加 使用加法运算,可以将两个数相加,然后得出它们的和。 # 例1:将数字1和数字2相加 PS C:\> $a = 1 PS C:\> $b = 2 PS C:\&gt…

    C# 2023年6月8日
    00
  • ASP.NET(C#)应用程序配置文件app.config/web.config的增、删、改操作

    ASP.NET应用程序的配置文件有两种类型:对于控制台应用程序使用的是app.config,对于Web应用程序使用的是web.config。这两种配置文件的内容基本相同,只是命名不同。配置文件中存储了应用程序需要的各种配置信息,使用配置文件可以方便地对应用程序进行管理和配置。 下面是app.config或者web.config的增、删、改操作详细步骤: 增加…

    C# 2023年6月1日
    00
  • 实例代码讲解c# 线程(下)

    让我来详细讲解一下“实例代码讲解c# 线程(下)”的完整攻略。 1. 标题说明 本篇文章主要是针对C#线程相关知识进行讲解,并通过实例的方式来进行代码演示,包含线程同步、线程异步、线程池等内容。 2. 线程同步 线程同步是指多个线程在操作共享资源时,需要通过某种机制来保证数据的正确性。在C#中,常用的同步机制有锁机制和Monitor机制。 2.1 锁机制 p…

    C# 2023年5月31日
    00
  • c# 实现简单的串口通讯

    下面是详细讲解“c#实现简单的串口通讯”的完整攻略。 硬件准备 在进行串口通讯前,我们需要准备一些硬件设备,包括: 确保计算机中带有串口或者USB转串口的转接器。 一根串口线。 串口通讯设备(例如:单片机)。 环境配置 在进行串口通讯前,需要在电脑上安装串口通讯库,使用.NET的串口类即可实现串口通讯。在Visual Studio中,可以在工具箱中找到串口控…

    C# 2023年5月15日
    00
  • C#数值转换-显式数值转换表(参考)

    C#数值转换 – 显式数值转换表(参考) 在C#中,可以使用显式数值转换实现不同类型之间的转换。在进行显式数值转换时,需要使用类型转换运算符,也可以使用Convert或Parse方法。 本文提供了一个显式数值转换表,包含了常见的数值类型,以及它们之间的转换示例。 显式数值转换表 From DataType To DataType Type Conversio…

    C# 2023年5月15日
    00
  • C#实现简易猜数字游戏

    以下是“C#实现简易猜数字游戏”的完整攻略。 1.创建一个C#控制台应用程序 首先,我们需要在Visual Studio中创建一个C#控制台应用程序,为我们的猜数字游戏提供基本的框架。在创建项目时,可以选择“控制台应用程序”模板。 2.编写游戏逻辑 2.1.生成随机数字 我们需要一个随机数字来作为游戏的答案。C#中可以通过使用Random类来生成随机数字。下…

    C# 2023年6月8日
    00
  • .Net Core 进程守护之Supervisor使用详解

    .NET Core 进程守护之Supervisor使用详解 在本攻略中,我们将详细讲解如何使用Supervisor对.NET Core进程进行守护,并提供两个示例说明。 Supervisor简介 Supervisor是一个进程守护程序,可以监控并管理多个进程。它可以在进程崩溃或异常退出时自动重启进程,保证进程的稳定性和可靠性。 安装Supervisor 在L…

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