您的位置:首页 > 编程语言 > ASP

ASP.NET - 如何:使用 ASP.NET Login 控件的高级功能

2009-12-21 22:49 591 查看
Login 控件是一种复合控件,提供了登录窗体的所有常用用户界面 (UI) 元素。该控件被模块化,可分别自定义每个部件。这些部件包括“用户名”和“密码”文本框、“提交”按钮、用于创建新用户的按钮、“记住我”复选框和用户的帮助信息。您可以通过定义新元素和重用默认组件来定义自己的登录控件用户界面。您还可以自定义 Login 控件的用户界面文本和外观(字体和颜色)。或者,可以通过应用 ASP.NET 主题或外观来更改 Login 控件的总体外观。
此外,您还可以利用 Login 控件的更多高级功能,如用户登录时是否将登录信息存储在浏览器的持久性 Cookie 中或者登录控件(在默认登录页以外的页上)是否可见。最后,您可以将登录控件转换为模板以完全控制控件的外观。

一、控制 Login 控件在用户登录时是否可见
1、将一个 Login 控件放在页上。
说明: 默认情况下,该控件配置为使用名为 Login.aspx 的登录页。您可以通过设置 FormsAuthentication 类的 LoginUrl 属性更改 Web.config 文件中登录页的名称。

2、如果希望只在用户未登录时显示 Login 控件(该控件将始终显示在由 LoginUrl 属性标识的登录页上),则将 VisibleWhenLoggedIn 属性设置为 false。

二、控制是否将身份验证令牌存储在持久性 Cookie 中
1、如果希望控件显示“下次记住我”复选框,则将 DisplayRememberMe 属性设置为 true。如果用户在登录时选中“下次记住我”复选框,身份验证令牌将被存储在浏览器的持久性 Cookie 中。

2、如果希望在默认情况下选中“下次记住我”复选框,则将 RememberMeSet 属性设置为 true。

3、如果希望将身份验证令牌存储在持久性 Cookie 中,而不为用户提供清除“下次记住我”复选框的选择,则将 RememberMeSet 属性设置为 true,并将 DisplayRememberMe 属性设置为 false。对于可以从供多个用户使用的公共计算机访问的站点,则不建议这样做,因为用户的持久性身份验证令牌可能被不必要的用户使用。

三、将帮助链接添加到 Login 控件
1、若要添加一个链接到 Login 控件,以将用户转到他或她能够创建新用户帐户的 URL,则将 CreateUserText 属性设置为文本(如 Click here to register(单击此处注册)),并将 CreateUserUrl 属性设置为帮助页的 URL(如 ~/register.aspx)。
说明: 此步骤以及下面的步骤要求目标 URL 位于不需要身份验证的位置。

2、若要添加一个链接到 Login 控件,以将用户转到可以恢复用户密码的 URL,则将 PasswordRecoveryText 属性设置为文本(如 Forgot your password?(是否忘记了密码?)),并将 PasswordRecoveryUrl 属性设置为帮助页的 URL(如 ~/recoverpassword.aspx)。

3、若要添加一个链接到 Login 控件,以将用户转到帮助 URL,则将 HelpPageText 属性设置为文本(如 Need Help?(是否需要帮助?)),并将 HelpPageUrl 属性设置为帮助页的 URL(如 ~/userhelp.aspx)。

四、将图像添加到 Login 控件
若要使用图像代替“登录”按钮,则将 LoginButtonImageUrl 属性设置为登录图像文件的 URL,如 ~/images/login.gif。
您还可以使用 PasswordRecoveryIconUrl、CreateUserIconUrl 和 HelpPageIconUrl 属性分别包含链接到创建用户 URL、密码恢复 URL 和帮助 URL 的图像。

五、将登录控件转换为模板
您可以将 Login 控件转换为模板,在标记中该模板被定义为包含 ASP.NET 控件(如 Label 和 TextBox)的表。然后,您可以使用这些元素或添加自己的元素来为 Login 控件创建自定义模板。请注意,组成登录模板的控件与默认模板中的控件使用相同的控件 ID。

5.1、对登录控件使用模板
1、在设计视图中,将 Login 控件放在页上。
2、右击该控件,然后从快捷菜单中选择“转换为模板”。

Login 控件的转换方式取决于 DOCTYPE 声明。如果 DOCTYPE 声明设置为 XHTML 1.0 Transitional (<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">),则样式应用于在将 Login 控件转换为模板时创建的表。如果 DOCTYPE 声明没有设置为 XHTML 1.0 Transitional 或不存在,则没有任何样式信息保存在生成的外部表中。

例如,如果您设置了 Login 控件上的相对字号,然后将该控件转换为模板,则相对字号没有保存在表中。下面的示例显示字号设置为 X-Large 的 Login 控件。
<asp:login id="Login2" runat="server" font-size="X-Large" BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" ForeColor="#333333">
<TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
<InstructionTextStyle Font-Italic="True" ForeColor="Black" />
<TextBoxStyle Font-Size="0.8em" />
<LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px"
Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284775" />
</asp:login>

当上面的代码中的 Login 控件转换为模板时,创建的表没有应用任何样式。下面的示例是上述控件在转换为模板时生成的代码段。
<asp:login id="Login2" runat="server" font-size="X-Large" BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" ForeColor="#333333">
<TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
<InstructionTextStyle Font-Italic="True" ForeColor="Black" />
<TextBoxStyle Font-Size="0.8em" />
<LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px"
Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284775" />
<LayoutTemplate>
<table border="0" cellpadding="4" cellspacing="0" style="border-collapse: collapse">
...
如果您要样式属性也应用于在将 Login 控件转换为模板时创建的表,请确保先将页的 DOCTYPE 设置为 XHTML 1.0 Transitional,然后在设计视图中,从控件菜单中选择“转换为模板”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐