- 软件开发视频大讲堂:ASP.NET从入门到精通(第4版)
- 明日科技
- 2342字
- 2020-11-28 17:50:18
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。
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控件。
图3.51 CreateUserWizard控件
CreateUserWizard控件的常用属性及说明如表3.35所示。
表3.35 CreateUserWizard控件的常用属性及说明
下面对比较重要的属性进行详细介绍。
ContinueDestinationPageUrl属性
ContinueDestinationPageUrl属性包含用户在站点上成功完成注册后将跳转到的网页的URL。通过设置ContinueDestinationPageUrl属性,可以控制新注册的用户将跳转到的第1个页面。当Continue-DestinationPageUrl属性为Empty且用户单击“继续”按钮后,该页将刷新并清除表单中的所有值。
PasswordRegularExpression属性
获取或设置用于验证提供的密码的正则表达式。默认值为空字符串(""),用户输入的密码必须包括大写和小写字母、数字以及标点,且长度至少为8个字符。
说明
CreateUserWizard控件实现注册时有两个步骤:一是注册新账户;二是完成。可以分别对这两个步骤的界面进行设置。
3.7.3 使用Login和CreateUserWizard控件实现用户注册与登录
【例3.19】 使用Login和CreateUserWizard控件实现用户注册与登录。(示例位置:TM\sl\03\19)
本示例主要介绍如何使用Login和CreateUserWizard控件实现用户注册与登录功能。运行程序,在用户注册页面(见图3.52)输入正确的注册信息后,单击“创建用户”按钮,如果注册成功则会出现如图3.53所示的页面效果,单击“继续”按钮将跳转到用户登录页面(见图3.54),在该页面中输入用户名和密码,单击“登录”按钮进行登录,如果登录成功将跳转到如图3.55所示的页面。在用户登录页面单击“注册”按钮将跳转到用户注册页面。
图3.52 用户注册页面
图3.53 注册成功
图3.54 用户登录页面
图3.55 登录成功
程序开发的主要步骤如下。
说明
为了使用ASP.NET提供的成员资格服务,首先要创建数据库,下面介绍使用命令行命令aspnet_regsql.exe创建数据库的方法。
(1)打开“VS2015开发人员命令提示”窗口,输入命令提示符“aspnet_regsql.exe”命令,如图3.56所示。
图3.56 “VS2012开发人员命令提示”窗口
(2)输入完命令后按Enter键,弹出“ASP.NET SQL Server安装向导”窗口,如图3.57所示。
图3.57 ASP.NET SQL Server安装向导
(3)单击“下一步”按钮,在弹出的“选择安装项”对话框中选择“为应用程序服务配置SQL Server”选项,单击“下一步”按钮,弹出“选择服务器和数据库”对话框,如图3.58所示。
图3.58 选择服务器和数据库
(4)在“服务器”文本框中输入本机数据库服务器名称,在“数据库”下拉列表框中选择“默认”选项,系统会自动创建一个名称为aspnetdb的数据库。单击“下一步”按钮完成操作,数据库创建成功。
注意
数据库创建成功后,系统在数据库中会自动创建一些用户表,如图3.59所示。
图3.59 aspnetdb数据库
(5)新建一个网站,将主页命名为Default.aspx。
(6)打开Web.confg文件,设置<connectionStrings>标记及<system.web>标记下的<compilation>和<authentication>标记,代码如下:
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> … <connectionStrings> <remove name="LocalSqlServer" /> <add name="LocalSqlServer" connectionString="server=MRPYJ\MRPYJ; database=aspnetdb; uid=sa; pwd=; "/> </connectionStrings> <system.web> <compilation debug="true"/> <authentication mode="Forms"/> </system.web> </configuration>
注意
<add>标记的name属性必须设置为LocalSqlServer,否则会出现错误。
(7)在Default.aspx页面上添加1个CreateUserWizard控件,单击控件右上角的按钮,在弹出的菜单中选择“自动套用格式”命令,在打开的对话框中选择“典雅型”选项;在“步骤”下拉列表框中选择“完成”选项,该项也设置自动套用格式为“典雅型”;设置CreateUserWizard控件的ContinueDestinationPageUrl属性值为"~/Login.aspx",这里是设定注册成功单击“继续”按钮时跳转的文件路径。代码如下:
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" BackColor="#F7F7DE" BorderColor="#CCCC99" BorderStyle="Solid" BorderWidth="1px" ContinueDestinationPageUrl="~/Login.aspx" Font-Names="Verdana" Font-Size="10pt"> <SideBarStyle BackColor="#7C6F57" BorderWidth="0px" Font-Size="0.9em" VerticalAlign="Top" /> <SideBarButtonStyle BorderWidth="0px" Font-Names="Verdana" ForeColor="#FFFFFF" /> <ContinueButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" ForeColor="#284775" /> <NavigationButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" ForeColor="#284775" /> <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="#FFFFFF" HorizontalAlign="Center" /> <CreateUserButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" ForeColor="#284775" /> <TitleTextStyle BackColor="#6B696B" Font-Bold="True" ForeColor="#FFFFFF" /> <StepStyle BorderWidth="0px" /> <WizardSteps> <asp:CreateUserWizardStep runat="server" /> <asp:CompleteWizardStep runat="server" /> </WizardSteps> </asp:CreateUserWizard>
说明
设定CreateUserWizard控件的自动套用格式,会自动生成修饰控件的样式代码。
(8)添加一个Web窗体,命名为Login.aspx,在该页面上添加1个Login登录控件。Login控件的属性设置如表3.36所示。
表3.36 Login控件属性设置
(9)添加一个Web窗体,命名为CheckLogin.aspx,切换到CheckLogin.aspx.cs页面,编写如下代码以输出登录提示信息。
protected void Page_Load(object sender, EventArgs e) { Response.Write(User.Identity.Name+" 登录成功:-)"); }
技巧
在.aspx页面上按下F7键可以切换到.aspx.cs页面。