您当前的位置:首页 > 文章教程 > 计算机与互联网 > 网络编程

16.5登录控件

16.5登录控件

图片 1 知识点讲解:光盘:视频\PPT讲解(知识点)\第16章\登录控件.mp4

ASP.NET为程序员提供了登录控件,通过这些控件,只需使用简单的设置即可实现身份验证功能,而无需编写大量的代码。还可以实现注册、登录、修改密码和取回密码功能。在本节的内容中,将详细讲解ASP.NET中登录控件的基本知识。

程序员可以使用Visual Studio 2012方便地添加一个Login.aspx页面,并在该页面上放置一个登录控件(Login控件),然后使用属性窗口对该控件进行配置。具体代码格式如下。

<asp:Login ID="Login1" runat="server" CreateUserText="没有注册?"
CreateUserUrl="Register.aspx" PasswordRecoveryText="忘记密码?"
PasswordRecoveryUrl="PasswordRecovery.aspx"/>

其中,CreateUserText属性表示创建用户链接的字符串;CreateUserUrl属性表示创建用户的链接地址;PasswordRecoveryText属性表示取回密码链接的字符串;PasswordRecoveryUrl属性表示取回密码的链接地址。

用户向导控件(CreateUserWizard控件)为用户注册页面服务,注册链接的地址为Register.aspx,因此需要创建一个Register.aspx页面,用于注册操作。在页面上放置一个Create UserWizard控件。具体代码格式如下。

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" 
ContinueDestinationPageUrl="Default.aspx" />

其中,ContinueDestinationPageUrl属性表示注册完成后转向的页面地址。之后,会创建Default.aspx页面,以显示登录名和登录状态等信息。

当新用户注册后,系统会自动为用户登录。在默认情况下密码需要有一定的强度(最短长度为7位,并且必须包含1个非字母的数字字符)。可以通过修改Web.config文件来改变这个设定,例如下面的配置段为成员资格指定了一个MyAspNetSqlProvider的Provider,并设定密码最短长度为6位,不需要包含任何非字母的数字字符(<system.web>节点下)。

<membership defaultProvider="MyAspNetSqlProvider">
 <providers>
  <add name="MyAspNetSqlProvider" type="System.Web.Security.
  SqlMembershipProvider" connectionStringName="LocalSqlServer"
  minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"
  applicationName="/"/>
 </providers>
</membership>

另外,还需要指定用于成员资格服务的数据库连接字符串(<configuration>节点下)。

<connectionStrings>
 <add name="LocalSqlServer" connectionString="data source=xxx;Integrated
 Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
 providerName="System.Data.SqlClient" />
</connectionStrings>

设置Login控件的PasswordRecoveryUrl属性后,会新建一个用于密码恢复(取回密码)操作的页面PasswordRecovery.aspx。在该页面上放置一个密码恢复控件(PasswordRecovery控件)。密码恢复的过程如下。

(1)输入用户名。

(2)输入该用户密码问题的答案。

(3)如果答案正确,则系统会把新的密码发送到用户的邮箱中。

为此,需要在Web.config文件的<configuration>节点下新增SMTP邮件服务器的配置,具体代码如下。

<system.net>
 <mailSettings>
  <smtp from="发件人的邮件地址">
  <network host="SMTP邮件服务器名" port="端口(默认25)" password="" userName="" />
  </smtp>
 </mailSettings>
 </system.net>

用户在登录后可能还会希望进行密码修改操作,为此可以创建一个ChangePassword.aspx页面,然后在该页面上放置一个修改密码控件(ChangePassword控件)。具体代码如下。

<asp:ChangePassword ID="ChangePassword1" runat="server" ContinueDestinationPageUrl=
"Default.aspx"/>

在上述代码中,设置了ContinueDestinationPageUrl属性为Default.aspx,表示在修改密码后让系统转到Default.aspx页面。

除了注册、登录和密码操作外,还有可能用到如下操作。

  • 为没有登录的用户提供登录操作,为已经登录的用户提供退出操作。
  • 显示已经登录的用户名。
  • 为已登录和未登录的用户显示不同的信息。

要实现上述3个操作,可以分别使用LoginStatus、LoginName和LoginView控件来完成。

  • LoginStatus控件会自动根据用户是否登录来显示“登录”链接或者“退出”链接。当然,也可以把文字换成图片。
  • LoginName控件可以按照一定的格式来显示登录的用户名。
  • LoginView控件提供了LoggedInTemplate和AnonymousTemplate等模板,其中LoggedInTemplate模板中的内容会在登录后显示,而AnonymousTemplate模板中的内容会在未登录时显示。

例如下面的代码。

<asp:LoginStatus ID="LoginStatus1" runat="server" />
<asp:LoginName ID="LoginName1" runat="server" FormatString="您好:{0}"/>
<asp:LoginView ID="LoginView1" runat="server">
  <LoggedInTemplate>
    <a href="ChangePassword.aspx">修改密码</a>
  </LoggedInTemplate>
  <AnonymousTemplate>
    <a href="PasswordRecovery.aspx">恢复密码</a>
  </AnonymousTemplate>
</asp:LoginView>