官术网_书友最值得收藏!

  • .NET Web高級開發
  • 羅江華 朱永光編著
  • 979字
  • 2018-12-29 13:19:41

1.2.4 登錄控件

成員身份服務本身就顯著減少了驗證登錄和管理用戶所需的代碼量,此外,還有一系列登錄控件使窗體身份驗證變得更加容易。它們是一個新的登錄控件提供生成塊,向站點添加身份驗證和基于授權的用戶界面,如登錄窗體、創建用戶的窗體、密碼檢索,以及已登錄的用戶或角色的自定義用戶界面。這些控件使用ASP.NET 2.0中內置的成員資格服務和角色服務,與站點中定義的用戶和角色信息交互。

圖1-15 Login控件

登錄控件可以與成員身份服務配合使用(在默認情況下,登錄控件與ASP.NET成員資格集成,以幫助使網站的用戶身份驗證過程自動化),也可以不與其配合使用,但它們與該服務之間的集成性非常好,以至于當登錄控件與成員身份服務一起使用時,一些基本任務(例如,驗證用戶名和密碼以及用電子郵件發送遺忘的密碼,如圖1-15所示)通常不必編寫任何代碼就可以完成。

圖1-15中所示的Login控件是登錄控件系列的核心控件。除了提供具有高度可自定義性的外觀顯示以外,它還能夠調用Membership.ValidateUser來驗證用戶名和密碼。Login控件還可以調用FormsAuthentication.RedirectFromLoginPage,將用戶重定向到他們在被重定向到登錄頁時嘗試到達的頁面。然后,FormsAuthentication.RedirectFromLoginPage將發出身份驗證Cookie。

在ASP.NET 2.0中有三種常見方式使用此控件,下面分別進行闡述。

1.使用默認的向導控件功能

默認的注冊向導的使用向導非常簡單,只要一行代碼就可以完成:

<asp: CreateUserWizard ID="CreateUserWizardControl" runat="server"/>

無需額外的代碼就能夠完成用戶的注冊,會將注冊的信息寫入到ASPNETDB.MDF數據庫中。

2.使用默認ID

但是有時使用默認向導實現的功能過于簡單,太死板,沒有靈活性。例如用戶名,如果要驗證用戶名必須是字母或者數字,此時利用上面的代碼就不能夠完成,因此不得不使用模板,或類似如下的代碼:

<asp:CreateUserWizard ID="CreateUserWizardControl" runat="server">
    <WizardSteps>
    <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server" Title
="UserInfo">
    <ContentTemplate>
User Name:
    <asp:TextBox runat="server" ID="UserName" ></asp:TextBox>
    <asp:RequiredFieldValidator runat="server" ControlToValidate="UserName"
ValidationGroup="CreateUserWizardControl"
      ErrorMessage="UserName is required." ToolTip="UserName is required."
ID="UserNameRequired"
      Display="Dynamic">
</asp:RequiredFieldValidator>
Password: <asp:TextBox runat="server" TextMode="Password" ID="Password">
</asp:TextBox>
Confirm   Password:<asp:TextBox   runat="server"   TextMode="Password"
ID="ConfirmPassword"></asp:TextBox>
</ContentTemplate>
</asp:CreateUserWizardStep>
    </WizardSteps>
</asp:CreateUserWizard>

在使用上面代碼時,請注意系統默認定義的ID,例如用戶名使用TextBox的ID只能是UserName,密碼使用的TextBox的ID只能夠是Password。你查看MSDN以了解CreateUserWizard更多的預定義ID。

3.用戶自定義ID

如果覺得使用微軟預定義的ID不方便,這時我們就可以自己來定義它。如想讓用戶的ID為txtName,密碼ID為txtPassword,如果你使用自定義的ID,系統將不能夠識別,這時你就需要自己獲取txtName和txtPassword的Text值了。具體處理較為煩瑣。因為您需要做如下步驟:

① 獲取用戶名;

② 獲取密碼;

③ 連接數據庫;

④ 將輸入寫入數據庫;

⑤ 關閉數據庫。

可以看到,不使用系統預定義的功能,你的工作量將大幅度增加。

主站蜘蛛池模板: 大埔县| 昭苏县| 河池市| 巨鹿县| 京山县| 安吉县| 蓝山县| 海阳市| 民县| 城步| 玉龙| 顺义区| 平湖市| 浦县| 宝坻区| 宜黄县| 比如县| 庆安县| 泰安市| 彰化市| 海淀区| 安福县| 济阳县| 沙河市| 芦山县| 恩平市| 饶河县| 大港区| 花垣县| 辽源市| 瓮安县| 通化市| 蒙自县| 兴国县| 绵阳市| 庆元县| 潞城市| 砀山县| 永定县| 武冈市| 衡山县|