3.7 登录控件

视频讲解

3.7.1 Login控件

Login控件是一个复合控件,它有效集成了登录验证页面中常见的用户界面元素和功能。通常情况下,Login控件会在页面中呈现3个核心元素,即用于输入用户名的文本框、用于输入密码的文本框和用于提交用户凭证的按钮。Login控件与成员资格管理功能集成,无须编写任何代码就能够实现用户登录功能。

Login控件还具有很强的自定义扩展能力,主要包括以下几个方面。

  • ☑ 自定义获取密码页面的提示文字和超链接。
  • ☑ 自定义帮助页面的提示文字和超链接。
  • ☑ 自定义创建新用户页面的提示文字和超链接。
  • ☑ 自定义“下次登录时记住”的CheckBox控件。
  • ☑ 自定义各种提示信息和操作,如未填写用户凭证的提示、登录失败的提示、登录成功之后的操作等。

如图3.50所示为Login控件。

图3.50 Login控件

注意

默认情况下,Login控件使用Web.config配置文件中定义的成员资格提供程序。

1. Login控件的常用属性

Login控件的常用属性及说明如表3.33所示。

表3.33 Login控件的常用属性及说明

下面对比较重要的属性进行详细介绍。

  • ☑ CreateUserText属性

CreateUserText属性包含站点注册页的链接文本。在CreateUserUrl属性中指定注册页的URL。如果CreateUserUrl为空,则向用户显示CreateUserText属性中的文本,但不以链接的形式显示;如果CreateUserText属性为空,则不向用户提供注册页链接。

  • ☑ CreateUserUrl属性

CreateUserUrl属性用来设置新用户注册页的URL,它包含网站新用户注册页的URL。CreateUserText属性包含链接使用的文本。如果CreateUserText属性为空,则不向用户提供注册页链接。

  • ☑ DestinationPageUrl属性

DestinationPageUrl属性指定当登录尝试成功时显示的页面。它将重写Login控件的默认行为以及在配置文件中所做的defaultUrl设置。

  • ☑ FailureAction属性

FailureAction属性定义当用户没有成功登录到网站时Login控件的行为,默认行为为重新加载页并显示FailureText属性的内容,以提醒用户登录失败。当将FailureAction设置为RedirectToLoginPage时,用户将被重定向到Web.config文件中定义的登录页。

  • ☑ Password属性

Password属性用来设置用户登录所需的密码,默认为空。该属性既可以在属性对话框中设置,也可以在后台代码中设置,密码为明文形式。

2. Login控件常用事件

由于Login控件与成员资格管理功能集成,因此,主要设置的是Login控件属性,而不必关心如何实现登录验证过程中的事件处理程序,这部分内容都是由Login控件自动完成的。这样做虽然带来了快捷和方便,但是应用灵活性有所降低。实际上,Login控件允许开发人员自行实现登录验证过程中的事件处理程序。Login控件的常用事件及说明如表3.34所示。

表3.34 Login控件的常用事件及说明

下面介绍Login控件的Authenticate事件。

当用户使用Login控件登录到网站时,引发Authenticate事件。自定义身份验证方案可以使用Authenticate事件对用户进行身份验证。定义身份验证方案应该将Authenticated属性设置为true,以指示已验证用户的身份。

说明

使用Login控件时,也可以不使用默认的成员资格提供程序,而在其Authenticate事件中编写代码验证用户的登录信息。

3.7.2 CreateUserWizard控件

CreateUserWizard控件用于创建新网站用户账户的用户界面。该控件与成员资格功能紧密集成,能够快速在成员数据库中创建新用户。如图3.51所示为CreateUserWizard控件。

CreateUserWizard控件的常用属性及说明如表3.35所示。

图3.51 CreateUserWizard控件

表3.35 CreateUserWizard控件的常用属性及说明

下面对比较重要的属性进行详细介绍。

  • ☑ ContinueDestinationPageUrl属性

ContinueDestinationPageUrl属性包含用户在站点上成功完成注册后将跳转到的网页的URL。通过设置ContinueDestinationPageUrl属性,可以控制新注册的用户将跳转到的第一个页面。当Continue-DestinationPageUrl属性为Empty且用户单击“继续”按钮后,将刷新该页并清除表单中的所有值。

  • ☑ PasswordRegularExpression属性

获取或设置用于验证提供的密码的正则表达式。默认值为空字符串(""),用户输入的密码必须包括大写和小写字母、数字以及标点,且长度至少为8个字符。

说明

CreateUserWizard控件实现注册时有两个步骤:一是注册新账户,二是完成,可以分别对这两个步骤的界面进行设置。

3.7.3 使用Login控件和CreateUserWizard控件实现用户注册与登录

【例3.19】使用Login控件和CreateUserWizard控件实现用户注册与登录。(示例位置:mr\TM\03\19)

运行程序,在用户注册页面(如图3.52所示)输入正确的注册信息后,单击“创建用户”按钮,如果注册成功则出现如图3.53所示的页面效果,单击“继续”按钮将跳转到用户登录页面(如图3.54所示),在该页面中输入用户名和密码,单击“登录”按钮进行登录,如果登录成功将跳转到如图3.55所示的页面。在用户登录页面单击“注册”按钮将跳转到用户注册页面。

图3.52 用户注册页面

图3.53 注册成功

图3.54 用户登录页面

图3.55 登录成功

程序开发的主要步骤如下。

说明

为了使用ASP.NET提供的成员资格服务,首先要创建数据库,下面介绍使用命令行命令aspnet_regsql.exe创建数据库的方法。

(1)打开“VS 2017开发人员命令提示”窗口,输入命令提示符“aspnet_regsql.exe”命令,如图3.56所示。

(2)输入完命令后按Enter键,弹出“ASP.NET SQL Server安装向导”窗口,如图3.57所示。

图3.56 “VS 2017的开发人员命令提示符”窗口

(3)单击“下一步”按钮,在弹出的“选择安装项”界面中选择“为应用程序服务配置SQL Server”选项,单击“下一步”按钮,弹出“选择服务器和数据库”界面,如图3.58所示。

图3.57 ASP.NET SQL Server安装向导

图3.58 选择服务器和数据库

(4)在“服务器”文本框中输入本机数据库服务器名称,在“数据库”下拉列表框中选择“默认”选项,系统会自动创建一个名称为aspnetdb的数据库。单击“下一步”按钮完成操作,数据库创建成功。

注意

数据库创建成功后,系统在数据库中会自动创建一些用户表,如图3.59所示。

图3.59 aspnetdb数据库

(5)新建一个网站,将主页命名为Default.aspx。

(6)打开Web.config文件,设置<connectionStrings>标记及<system.web>标记下的<compilation>和<authentication>标记,代码如下:

注意

必须设置<add>标记的name属性为LocalSqlServer,否则会出现错误。

(7)在Default.aspx页面上添加一个CreateUserWizard控件,单击控件右上角的按钮,在弹出的菜单中选择“自动套用格式”命令,在打开的对话框中选择“典雅型”选项;在“步骤”下拉列表框中选择“完成”选项,也将该项设置自动套用格式为“典雅型”;设置CreateUserWizard控件的ContinueDestinationPageUrl属性值为"~/Login.aspx",这里是设定注册成功单击“继续”按钮时跳转的文件路径。代码如下:

说明

设定CreateUserWizard控件的自动套用格式,会自动生成修饰控件的样式代码。

(8)添加一个Web窗体,命名为Login.aspx,在该页面上添加一个Login登录控件。Login控件的属性设置如表3.36所示。

表3.36 Login控件属性设置

(9)添加一个Web窗体,命名为CheckLogin.aspx,切换到CheckLogin.aspx.cs页面,编写如下代码以输出登录提示信息:

技巧

在.aspx页面上按F7键可以切换到.aspx.cs页面。