![ASP.NET从入门到精通(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/771/27111771/b_27111771.jpg)
3.7 登录控件
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P103_19201.jpg?sign=1739682684-Wz9h7TCExoVkCefT0wPfWNHAIA6K4KIL-0-8643f558e138ee59f24fa249a7ba6c2b)
视频讲解
3.7.1 Login控件
Login控件是一个复合控件,它有效集成了登录验证页面中常见的用户界面元素和功能。通常情况下,Login控件会在页面中呈现3个核心元素,即用于输入用户名的文本框、用于输入密码的文本框和用于提交用户凭证的按钮。Login控件与成员资格管理功能集成,无须编写任何代码就能够实现用户登录功能。
Login控件还具有很强的自定义扩展能力,主要包括以下几个方面。
- ☑ 自定义获取密码页面的提示文字和超链接。
- ☑ 自定义帮助页面的提示文字和超链接。
- ☑ 自定义创建新用户页面的提示文字和超链接。
- ☑ 自定义“下次登录时记住”的CheckBox控件。
- ☑ 自定义各种提示信息和操作,如未填写用户凭证的提示、登录失败的提示、登录成功之后的操作等。
如图3.50所示为Login控件。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P103_19196.jpg?sign=1739682684-lHzeeik7dn5KrhagQ6IcvXBGpQroSj9f-0-1a37e2b7abc4d7322985c6bd650e2f58)
图3.50 Login控件
注意
默认情况下,Login控件使用Web.config配置文件中定义的成员资格提供程序。
1. Login控件的常用属性
Login控件的常用属性及说明如表3.33所示。
表3.33 Login控件的常用属性及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T103_19213.jpg?sign=1739682684-marMvr9uP0JVisXp3i8oNWtZSKCXwYj9-0-69036a57ac5b2d2efbc1f5b4e4d0203f)
下面对比较重要的属性进行详细介绍。
- ☑ 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控件的常用事件及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T104_19290.jpg?sign=1739682684-fBg2huqCTEgQ2PTCprzVamVhf6zVpj4n-0-ffc28c180428d5caffc6a6163aa32f18)
下面介绍Login控件的Authenticate事件。
当用户使用Login控件登录到网站时,引发Authenticate事件。自定义身份验证方案可以使用Authenticate事件对用户进行身份验证。定义身份验证方案应该将Authenticated属性设置为true,以指示已验证用户的身份。
说明
使用Login控件时,也可以不使用默认的成员资格提供程序,而在其Authenticate事件中编写代码验证用户的登录信息。
3.7.2 CreateUserWizard控件
CreateUserWizard控件用于创建新网站用户账户的用户界面。该控件与成员资格功能紧密集成,能够快速在成员数据库中创建新用户。如图3.51所示为CreateUserWizard控件。
CreateUserWizard控件的常用属性及说明如表3.35所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P105_19431.jpg?sign=1739682684-svCoA7vm264R4gm6lX78zIIWk9xUpLZ7-0-0466ca63d046470a83ae3e040dec0859)
图3.51 CreateUserWizard控件
表3.35 CreateUserWizard控件的常用属性及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T105_19441.jpg?sign=1739682684-j9ZybGewMUCboRNDWPFjWzspypBunHYy-0-52e17eabb1ee4bfcbc2c025098c94a1e)
下面对比较重要的属性进行详细介绍。
- ☑ 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所示的页面。在用户登录页面单击“注册”按钮将跳转到用户注册页面。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P106_19450.jpg?sign=1739682684-RvBRIU61MVcJL4gymRipFQlfwDMRdolC-0-54c167df3c0fed69233ffde4df44a10a)
图3.52 用户注册页面
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P106_19451.jpg?sign=1739682684-xWpL1qBEYk2TpR5MWCbIBANJZBiSq3ZD-0-38d0fc280b54bcf49ab6f89ed4467a70)
图3.53 注册成功
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P106_19452.jpg?sign=1739682684-US8l04cFoTHwkjaWUw7aKWnXcQnbAaso-0-ce4762199ab65c824c03acb1df09b2e5)
图3.54 用户登录页面
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P106_19453.jpg?sign=1739682684-7bp5YByARmACupjXyDKm56kvH1TIflnS-0-f79f12fb24ab190b8b53e2749ef5ca31)
图3.55 登录成功
程序开发的主要步骤如下。
说明
为了使用ASP.NET提供的成员资格服务,首先要创建数据库,下面介绍使用命令行命令aspnet_regsql.exe创建数据库的方法。
(1)打开“VS 2017开发人员命令提示”窗口,输入命令提示符“aspnet_regsql.exe”命令,如图3.56所示。
(2)输入完命令后按Enter键,弹出“ASP.NET SQL Server安装向导”窗口,如图3.57所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P107_19475.jpg?sign=1739682684-LIcNat7kSmpF8a5gfihdgwwk3xbY0kZc-0-d65dcb3da47522b4f74ce9fe0165c571)
图3.56 “VS 2017的开发人员命令提示符”窗口
(3)单击“下一步”按钮,在弹出的“选择安装项”界面中选择“为应用程序服务配置SQL Server”选项,单击“下一步”按钮,弹出“选择服务器和数据库”界面,如图3.58所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P107_19479.jpg?sign=1739682684-sVDlx84RW9TZzbhIGKSbdsPf52R5zKWT-0-7624606481a1882b4c951946dfa65ea6)
图3.57 ASP.NET SQL Server安装向导
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P107_19480.jpg?sign=1739682684-LVILfoj0buSKtE2fC6enddR3RPUTAEh2-0-84eb506c4efa840c9f993e64af6a038c)
图3.58 选择服务器和数据库
(4)在“服务器”文本框中输入本机数据库服务器名称,在“数据库”下拉列表框中选择“默认”选项,系统会自动创建一个名称为aspnetdb的数据库。单击“下一步”按钮完成操作,数据库创建成功。
注意
数据库创建成功后,系统在数据库中会自动创建一些用户表,如图3.59所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P107_19492.jpg?sign=1739682684-KE2eHxlnT2p0vgMtrmFsbzzP52nR3uvb-0-5b3752c8ba58f8be9ed4d7b69d32cf77)
图3.59 aspnetdb数据库
(5)新建一个网站,将主页命名为Default.aspx。
(6)打开Web.config文件,设置<connectionStrings>标记及<system.web>标记下的<compilation>和<authentication>标记,代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P108_86776.jpg?sign=1739682684-4dcud9aNamtzHPMlWhcbTxdvvHJCfIon-0-7ca96e186a2e9446f513862c41af0f73)
注意
必须设置<add>标记的name属性为LocalSqlServer,否则会出现错误。
(7)在Default.aspx页面上添加一个CreateUserWizard控件,单击控件右上角的按钮,在弹出的菜单中选择“自动套用格式”命令,在打开的对话框中选择“典雅型”选项;在“步骤”下拉列表框中选择“完成”选项,也将该项设置自动套用格式为“典雅型”;设置CreateUserWizard控件的ContinueDestinationPageUrl属性值为"~/Login.aspx",这里是设定注册成功单击“继续”按钮时跳转的文件路径。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P108_86778.jpg?sign=1739682684-G5xErzC6xZhqDI6TZzA0jTJvvgeNyAHh-0-18a0567b99edadb50c481f9e81709ccb)
说明
设定CreateUserWizard控件的自动套用格式,会自动生成修饰控件的样式代码。
(8)添加一个Web窗体,命名为Login.aspx,在该页面上添加一个Login登录控件。Login控件的属性设置如表3.36所示。
表3.36 Login控件属性设置
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T109_19822.jpg?sign=1739682684-qseWBRMuqknwzAv6Z2DQ3ezHU5AaCX1x-0-587d5237a356225ed2f2a9ed5bef37f3)
(9)添加一个Web窗体,命名为CheckLogin.aspx,切换到CheckLogin.aspx.cs页面,编写如下代码以输出登录提示信息:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P109_86784.jpg?sign=1739682684-AHMnWJTRXAIZvSNmFWnCv77t1XkcScOi-0-2f2aaa2a4e8cb7f840af39807c3fa956)
技巧
在.aspx页面上按F7键可以切换到.aspx.cs页面。