【C#.NET】保護你的ASP.NET應用程式(三)安全性相關的控制項

來源:互聯網
上載者:User
文章目錄
  • 15.6  安全性相關的控制項
  • 15.6.1  ASP.NET登入控制項概述
  • 15.6.2  登入控制項
  • 15.6.4  密碼恢複控制項
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-27 Login控制項

" hspace="12" src="http://book.csdn.net/BookFiles/406/img/image062.gif" width="159" align="left">15.6.3  建立使用者嚮導控制項

在建立登入頁面的時候,我們配置了註冊連結的地址為Register.aspx,因此需要建立一個Register.aspx頁面用於註冊操作。在頁面上放置一個CreateUserWizard控制項。

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

ContinueDestinationPageUrl="Default.aspx" />

在這裡,ContinueDestinationPageUrl屬性工作表示註冊完成後轉向的頁面地址。之後,我們會建立Default.aspx來顯示登入名稱和登入狀態等資訊。

瀏覽Default.aspx效果,15-28所示。

圖15-28 CreateUserWizard控制項

" hspace="12" src="http://book.csdn.net/BookFiles/406/img/image063.gif" width="196" align="left">注意以下幾點。

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-29 系統發送的密碼恢複郵件

" hspace="12" src="http://book.csdn.net/BookFiles/406/img/image064.gif" width="196" align="left">15.6.5  修改密碼控制項

使用者在登入後可能還會希望進行密碼修改操作,現在就來建立一個ChangePassword.aspx頁面,然後在頁面上放入一個ChangePassword控制項。

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

"Default.aspx"/>

在這裡,我們設定ContinueDestinationPageUrl屬性為Default.aspx,表示在修改密碼後讓系統轉到Default.aspx。修改密碼介面15-30所示。

圖15-30 ChangePassword控制項

" hspace="12" src="http://book.csdn.net/BookFiles/406/img/image065.gif" width="196" align="left">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控制項

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.