【C#.NET】保护你的ASP.NET应用程序(三)安全性相关的控件

15.6  安全性相关的控件

15.6.1  ASP.NET登录控件概述

使用ASP.NET 2.0提供的这些控件,我们只需要进行简单的设置而无需写一行代码就能提供“注册”、“登录”、“修改密码”和“取回密码”等与账户密切相关的一些操作。

如图15-26所示,可以看到IDE工具箱中的一套登录控件。

图15-26  ASP.NET登录控件

15.6.2  登录控件

首先添加一个Login.aspx,在页面上放入一个Login控件,然后使用属性窗口对控件进行配置。

<asp:Login ID="Login1" runat="server" CreateUserText="没有注册?"

CreateUserUrl="Register.aspx" PasswordRecoveryText="忘记密码?"

PasswordRecoveryUrl="PasswordRecovery.aspx"/>

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

然后浏览Login.aspx,界面如图15-27所示。

15.6.3  创建用户向导控件

在创建登录页面的时候,我们配置了注册链接的地址为Register.aspx,因此需要创建一个Register.aspx页面用于注册操作。在页面上放置一个CreateUserWizard控件。

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"

ContinueDestinationPageUrl="Default.aspx" />

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

浏览Default.aspx效果,如图15-28所示。

注意以下几点。

1.在注册后,系统会自动为用户登录。

2.默认情况下密码需要有一定的强度(最短长度为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=."SQLEXPRESS;Integrated

  Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"

  providerName="System.Data.SqlClient" />

</connectionStrings>

注意:其他有关成员资格的配置请回顾15.5.1节。

15.6.4  密码恢复控件

按照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>

浏览PasswordRecovery.aspx进行密码找回操作,然后你会收到如图15-29所示的一封邮件:

15.6.5  修改密码控件

用户在登录后可能还会希望进行密码修改操作,现在就来创建一个ChangePassword.aspx页面,然后在页面上放入一个ChangePassword控件。

<asp:ChangePassword ID="ChangePassword1" runat="server" ContinueDestinationPageUrl=

"Default.aspx"/>

在这里,我们设置ContinueDestinationPageUrl属性为Default.aspx,表示在修改密码后让系统转到Default.aspx。修改密码界面如图15-30所示。

15.6.6  其他控件

最后,来完成Default.aspx。除了注册、登录和密码操作外,很多时候我们还有一些其他需求,比如下面的操作。

·      为没有登录的用户提供登录操作,为已经登录的用户提供退出操作。

·      显示已经登录的用户名。

·      为已登录和未登录的用户显示不同的信息。

要实现这三个要求同样不需要写任何代码,我们可以分别使用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>

页面效果如图15-31所示。

登录前:

登录后:

图15-31  LoginStatus、LoginName和LoginView控件


你可能感兴趣的:(asp.net)