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页面。