文章目錄
- 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控制項