ASP.NET身份驗證機制membership入門——控件篇

轉載出自:http://www.cnblogs.com/xlb2000/archive/2010/06/13/1738074.html

  在前面兩篇文章裏,咱們瞭解了一下如何配置membership以及roleManager,那麼配置成功後又該如何應用呢?其實ASP.NET給咱們提供了一套登陸控件,咱們可使用這套控件,輕鬆的來完成一些通用的功能,例如:註冊,登陸等。html

 

 

那麼配置好以後第一件事情就是註冊用戶了,註冊用戶其實很簡單,咱們只需新建一個頁面,而後在頁面中拖出一個CreateUserWizard控件,而後運行頁面。好了,沒有寫一行代碼,可是註冊功能就已經實現了!就是這麼簡單!效果見下圖:

 

 

 

 

  全部的文本框都是不能爲空的,填完全部的空後,點擊建立用戶。這時,用戶就已經被建立了。方便吧!須要注意的是在輸入密碼時可能會出現「密碼最短長度爲 7,其中必須包含如下非字母數字字符: 1。」這樣的提示。這是由於咱們在配置的時候<membership>節點下<add>中有兩項配置是這樣寫的:web

 

    
    
    
    
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="1"

 

 

  第一個minRequiredPasswordLength="7"是密碼最短長度,咱們設定的密碼最短爲7位設計模式

 

 

  第二個minRequiredNonalphanumericCharacters="1"這個配置的意思就是說密碼中必須包含不是字母也不是數字的字符的個數,是爲了增強密碼強度,不過這個提示還真是容易讓用戶費解,我建議仍是把這個配置設爲0。安全

 

 

   這些提示可能有些給人感受有點不是很是確切,不過咱們能夠在該控件的屬性窗口中去修改提示的文本,例如: 服務器

 

複製代碼
    
    
    
    
< asp:CreateUserWizard ID ="CreateUserWizard1" runat ="server"
InvalidPasswordErrorMessage
="密碼最短長度爲 {0},其中必須包含如下非字母數字字符: {1}。" >
< WizardSteps >
< asp:CreateUserWizardStep ID ="CreateUserWizardStep1" runat ="server" >
</ asp:CreateUserWizardStep >
< asp:CompleteWizardStep ID ="CompleteWizardStep1" runat ="server" >
</ asp:CompleteWizardStep >
</ WizardSteps >
</ asp:CreateUserWizard >
複製代碼

 

 

  其餘提示屬性能夠再設計模式下,看到中文提示,就不在一一說明了。ide

 

 

  從上面的過程咱們能夠看到,web.config中的配置是會影響到前臺控件的功能的,例如:requiresUniqueEmail用 來設置是否須要惟一的Email,當用戶輸入的Email以前被註冊過期,若是該選項爲「true」則會給出錯誤提示,反之則否則。又好比:當 requiresQuestionAndAnswer=」true"時,CreateUserWizard控件就會要求用戶輸入安全提示問題和安全答案, 當該選項爲"false"時,則不會要求輸入提示問題和答案。post

 

 

  固然若是咱們要把這個控件用到項目中去,默認的外觀真的不能算是好看,那麼能不能去改變控件的默認外觀呢?答案是確定的!來看以下代碼網站

 

 

 

複製代碼
    
    
    
    
< asp:CreateUserWizard ID ="CreateUserWizard1" runat ="server"
InvalidPasswordErrorMessage
="密碼最短長度爲 {0},其中必須包含如下非字母數字字符: {1}。"
ContinueDestinationPageUrl
="~/Default2.aspx" >
< WizardSteps >
< asp:CreateUserWizardStep ID ="CreateUserWizardStep1" runat ="server" >
< ContentTemplate >
< table border ="0" cellpadding ="0" cellspacing ="0" >
< tr >
< td > 用戶名: </ td >
< td >< asp:TextBox runat ="server" ID ="UserName" ></ asp:TextBox ></ td >
</ tr >
< tr >
< td > 密碼: </ td >
< td >< asp:TextBox runat ="server" ID ="Password" ></ asp:TextBox ></ td >
</ tr >
< tr >
< td > 確認密碼: </ td >
< td >< asp:TextBox runat ="server" ID ="ConfirmPassword" TextMode ="Password" ></ asp:TextBox ></ td >
</ tr >
< tr >
< td > Email: </ td >
< td >< asp:TextBox runat ="server" ID ="Email" ></ asp:TextBox ></ td >
</ tr >
< tr >
< td > 安全提示問題: </ td >
< td >< asp:TextBox runat ="server" ID ="Question" ></ asp:TextBox ></ td >
</ tr >
< tr >
< td > 安全答案: </ td >
< td >< asp:TextBox runat ="server" ID ="Answer" ></ asp:TextBox ></ td >
</ tr >
< tr >
< td colspan ="2" class ="style1" >< asp:Literal runat ="server" ID ="ErrorMessage" ></ asp:Literal ></ td >
</ tr >
</ table >
</ ContentTemplate >
</ asp:CreateUserWizardStep >
< asp:CompleteWizardStep ID ="CompleteWizardStep1" runat ="server" >
< ContentTemplate >
< table border ="0" cellpadding ="0" cellspacing ="0" >
< tr >
< td > 恭喜!賬戶註冊成功! </ td >
</ tr >
< tr >< asp:Button runat ="server" ID ="ContinueButton" CommandName ="Continue" Text ="完成" /></ tr >
</ table >
</ ContentTemplate >
</ asp:CompleteWizardStep >
</ WizardSteps >
</ asp:CreateUserWizard >
複製代碼

 

 

  上面的例子使用了自定義模板的方式定製了CreateUserWizard控件的外觀,在CreateUserWizardStep下<ContentTemplate>中添加自定義內容,效果見下圖:ui

 

 

 

 

 

    填寫全部內容後,點擊建立用戶。<CompleteWizardStep>中內容就會顯示出來 。效果以下:url

 

 

 

 

 

  須要注意的是:全部文本框控件的ID屬性都是固定的。見下表

 

 

  UserName:用戶名,必選

 

  Password:密碼,必選

 

  ConfirmPassword:確認密碼,可選

 

  Email:Email若是web.config中RequireEmail爲true,則必選

 

  Question:密碼找回提示問題,若是requiresQuestionAndAnswer爲true,則必選

 

  Answer:密碼找回答案,同上

 

  ErrorMessage:錯誤提示,可選,這個須要是Label控件或是Literal控件

 

 

  按鈕則須要設置CommandName屬性。一共有3種:

 

 

  Cancel:取消按鈕,可選,能夠經過修改CreateUserWizard控件的CancelDestinationPageUrl屬性,來設定當用戶取消時跳轉的頁面

 

  Continue:繼續按鈕,可選,能夠經過修改ContinueDestinationPageUrl屬性,來設定當用戶註冊完成點擊繼續按鈕時跳轉到的頁面

 

  CreateUser:註冊按鈕,可選。

 

 

  基本上,註冊的功能就已經所有實現了。可是有一部分網站在你註冊成功後,向你註冊的郵箱中發送一封註冊確認郵件。這個功能若是要咱們本身寫,也 是比較麻煩的。其實CreateUserWizard控件給咱們提供了這個功能,只須要簡單的設置一下,那麼在用戶註冊成功後,將會馬上收到一封確認郵 件。具體的實現過程以下:

 

 

  在CreateUserWizard控件中加入以下代碼:

 

複製代碼
    
    
    
    
< asp:CreateUserWizard ID ="CreateUserWizard1" runat ="server" >
< MailDefinition
       BodyFileName="~/mail.txt"
Priority ="High"
From
="123@123.com"
IsBodyHtml
="true"
Subject
="新用戶註冊通知!" >
< EmbeddedObjects >
< asp:EmbeddedMailObject Name ="customerPic" Path ="~/p_w_picpaths/DSC00130.jpg" />
</ EmbeddedObjects >
</ MailDefinition >
< WizardSteps >
代碼省略...
</ WizardSteps >
</ asp:CreateUserWizard >
複製代碼

 

 

 

  <MailDefinition>這個節點就是確認Email相關的設置,每一個屬性的具體含義爲:  

 

    BodyFileName:郵件的正文,郵件的正文存放在一個文本文件中,經過該屬性指明文本文件的路徑便可。

 

    Priority:優先級。

 

    From:發件人,這個Email就是讓註冊用戶看到的發件人的地址。

 

    IsBodyHtml:指明發送的正文中是否爲HTML,若是在正文中使用了html標籤,就必須把該屬性設爲「true」

 

    Subject:郵件標題

 

    <EmbeddedObjects>:在郵件中嵌入的資源列表,如上例,在郵件中可使用<img src="cid:customerPic" alt="test" />這樣的代碼來引用

 

 

  下面列舉mail.txt的內容:

 

 

 

 

複製代碼
    
    
    
    
< html >
< head >< title ></ title ></ head >
< body >
< h1 > 歡迎您註冊本網站 </ h1 >
< p >
您的用戶名爲:
<% UserName %> < br />
您的密碼爲:
<% Password %>
</ p >
< p >
< a href ="http://www.cnblogs.com/xlb2000" >
< img src ="cid:customerPic" alt ="" />
</ a >
</ p >
</ body >
</ html >
複製代碼

 

 

   須要說明的是:在發送郵件以前,控件會將<% UserName %>和<% Password %>分別替換爲剛纔註冊過的用戶名和密碼。

 

 

  還差最後一步:就是須要添加服務器smtp設置,配置以下:

 

複製代碼
    
    
    
    
< configuration >
< system.net >
< mailSettings >
< smtp deliveryMethod ="Network" >
< network host ="smtp.163.com" userName ="用戶名" password ="密碼" port="25" />
</ smtp >
</ mailSettings >
</ system.net >
< system.web >
</ system.web >
</ configuration >
複製代碼

 

  這個配置告訴CreateUserWizard控件,在發送郵件時的郵件服務器,用戶名密碼,端口(默認25)等信息

 

 

 

  ok全部配置所有搞定,如今趕忙試着去註冊一個用戶吧!

 

 

 

 

 

  有註冊固然就得有登錄,密碼找回,等等這些功能了,MS也固然給咱們提供了這些組件,不過相比CreateUserWizard控件就比較簡單了,在這裏就再也不詳述,具體參考msdn就能夠了。

相關文章
相關標籤/搜索