ASP.NET Whidbey中personalization和membership的一些特徵

來源:互聯網
上載者:User
asp.net 在ASP.NET Whidbey中,一個基本的目標是,在開發應用程式時,減少開發時間和代碼量。為了達到這一目的,ASP.NET Whidbey提供了一系列的新特徵,例如無需代碼的資料繫結,新的伺服器端控制項,尤其是,在這篇文章中要重點討論的個人化(personalization)和成員角色(membership),來節省你的時間。

伴隨著個人化和成員角色這兩個新特徵,第一步是要配置你用來儲存個人化(personalization)和成員角色(membership)資料的提供者(provider)。雖然你可以自己建立Access或SQL Server資料庫,手動添加必要的配置元素,更簡單的方法是使用ASP.NET Web Site Administration tool,如圖一。


圖一

請注意,要成功的配置一個應用程式,你必須使用一個具有管理員權限的帳號來登入。



要建立一個Access的.mdb檔案來儲存personalization的資料,你需要開啟ASP.NET Web Site Administration tool。在一個叫DATA的檔案夾下,會自動建立一個AspNetDB.mdb的檔案。


圖二

要配置membership的provider,你需要使用ASP.NET Web Site Administration tool的Security標籤。最簡單的方法是選擇使用嚮導,如圖三。


圖三

在此刻,membership的資料庫會被建立,必須的配置元素也會被加入到web.config檔案中。你需要做的,只是把所有使用者加入到資料庫,設定限制的頁,以及建立一個login頁面。

很重要的一點是,你可以注意到,為personalization和membership建立的資料庫是相同的,所以你可以使用同樣的provider。

除了內嵌的Access和SQL Server的providers,你可以建立自己定製的providers,然後使用這些providers來配置應用程式。也就是說,你如果有了一個以前的資料庫,還是可以使用membership服務。



上面的都是理論方面的,接著我們來看一下執行個體。我會為各位讀者展示使用Access provider來配置personalization和membership,在membership資料庫中添加一個使用者,添加personalization的屬性,在一個頁面中使用這些屬性,分別是匿名使用者和已登入的使用者。

首先要建立一個Web網站,然後點擊Solution Explorer視窗下的Web Site Administration tool按鈕。(見圖二)

接著,點Security標籤,選擇Security Setup Wizard單選鈕,並點Next。第一步是很簡單的資訊,所以讀一下,就可以選Next。第二步,選擇From the Internet然後點Next。"From the Internet"是使用ASP.NET表單驗證來配置應用程式,"From a local area network"使用Windows驗證來配置應用程式。第三步,點Next來使用Web Site Administration tool已經自動建立的AspNetDB.mdb檔案。接著點Next跳過第四步。在第五步,因為有測試的目的,至少要加上一個使用者。第六步是建立訪問規則。最後,按Finish退出嚮導。資料庫已經建立,web.config檔案也被自動建立,加入了Web網站,裡麵包含了各種元素,檔案如下:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<connectionStrings>

<add name="webAdminConnection631974613823397072"

connectionString=

"c:\inetpub\wwwroot\aspnetPRO_PM\DATA\AspNetDB.mdb"

/>

</connectionStrings>

<system.web>

<membership defaultProvider="AspNetDB">

<providers>

<add name="AspNetDB"

type="System.Web.Security.AccessMembershipProvider,

System.Web, Version=1.1.3300.0, Culture=neutral,

PublicKeyToken=b03f5f7f11d50a3a"

connectionStringName=

"webAdminConnection631974613823397072"

applicationName="/aspnetPRO_PM"

enablePasswordRetrieval="true"

enablePasswordReset="true"

requiresQuestionAndAnswer="true"

passwordFormat="Encrypted" />

</providers>

</membership>

<roleManager defaultProvider="AspNetDB">

<providers>

<add name="AspNetDB"

type="System.Web.Security.AccessRoleProvider,

System.Web, Version=1.1.3300.0, Culture=neutral,

PublicKeyToken=b03f5f7f11d50a3a"

connectionStringName=

"webAdminConnection631974613823397072"

applicationName="/aspnetPRO_PM" />

</providers>

</roleManager>

<authentication mode="Forms" />

</system.web>

</configuration>

如果要允許匿名使用者存取你的網站,<anonymousIdentification>元素是必需的。personalization部分包含兩個屬性,第一個屬性,theme,並不指定一個類型,所以可以當作一個字串對待。第二個屬性,FavoriteColors,指定了StringCollection類作為它的類型。在這個屬性中,如果想要儲存不相容StringCollection類的資料,都會拋出異常。

<anonymousIdentification enabled="true"/>

<personalization>

<profile>

<property name="Theme" allowAnonymous="true" />

<property name="FavoriteColors"

type=

"System.Collections.Specialized.StringCollection"

allowAnonymous="true"

serializeAs="Xml" />

</profile>

</personalization>



現在,我們瞭解了配置personalization和定義一個provider,現在是時候研究如何定義構成使用者profile的value集了。你需要為你想儲存的每個profile值添加一個<property>條目。事實上,你可以儲存任何種類的對象,簡單類型,字串,布爾類型,或是複雜一點的,比如collections,甚至是自訂的類型。

<profile>

<property name="MessagesPerPage" type="int" />

</profile>

personalization系統支援更複雜的類型,例如collections。事實上,你可以儲存任何序列化的對象。其實定義一個複雜的屬性和定義一個簡單的屬性沒有太大的差別。接下來的代碼,包含了簡單和複雜的屬性的定義。

<personalization enabled="true" defaultProvider="Access">

<providers>

<add name="Access" type="... " connectionName="..." />

<add name="SQL" type="... " connectionName="..." />

</providers>

<profile>

<property

name="EmailAddresses"

type="System.Collection.Specialized.StringCollection"

serializeAs="Xml"

allowAnonymous="false"

provider="SQL"/>

<property name="MessagesPerPage" type="int" defaultValue="25" />

</profile>

</personalization>

定義好了使用者的profile後,就可以開始進行編碼。Page類包括一個profile屬性,也是HTTPPersonalizationBase的子類。它有如下的成員列表:


圖四



在membership特徵中,ASP.NET Whidbey提供了很多的安全控制項,下面是一個列表:

控制項
功能

Login
為網站定製了所有的登入功能,不需要任何代碼

LoginView
可以選擇幾種不同的模板

PasswordRecovery
“忘記密碼”的控制項,用選擇問題和答案來驗證使用者身份

LoginStatus
顯示使用者登入的狀態

LoginName
能將登入的使用者顯示到頁面上


我們舉PasswordRecovery控制項為例:在頁面添加一個PasswordRecovery控制項,HTML代碼如下:

<form runat="server">

<asp:passwordrecovery id="Passwordrecovery1" runat="server" font-

names="Verdana" font-size="10pt" bordercolor="#999999"

borderwidth="1px" borderstyle="Solid" backcolor="#FFFFCC"

visible=true>

<titletextstyle font-bold="True" forecolor="#FFFFFF"

backcolor="#333399">

</titletextstyle>

</asp:passwordrecovery>

</form

為了能實現這個功能,我們需要手動在web.config中添加以下代碼,指定smtp伺服器,使之能發送email給使用者。

<smtpMail

serverName="localhost">

</smtpMail>


圖五



我們可以看出,新一代的ASP.NET Whidbey,控制項已經做的非常完備,大大方便了程式員的開發效率,需要編寫的代碼越來越少了,讓我們拭目以待吧!


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.