會員管理與個人化程序

Download Report

Transcript 會員管理與個人化程序

第13章 會員管理與個人
化程序
第13章 會員管理與個人化程序
會員管理的基礎
 13-2 啟用ASP.NET的會員管理
 13-3 登入控制項
 13-4 ASP.NET的個人化程序
 13-5 Profile物件的個人化
 13-1
13-1 會員管理的基礎
 13-1-1 ASP.NET會員管理的基礎
 13-1-2 ASP.NET表單基礎驗證
 13-1-3 ASP.NET的會員管理功能
13-1-1 ASP.NET會員管理的基礎-登
入程序
 不論網路商店、社群網站、聊天室或拍賣
網站,使用者通常都需要註冊成為會員後,
才能使用網站提供的服務,這類網站在進
入前都需要執行登入程序,以確認使用者
是合法的網站會員。
 目前大部分的網站登入程序,都是在Web
Form表單輸入使用者資料後,送到伺服器
端執行確認,確認程序是檢查會員資料庫
是否有此位會員,如果有,就表示是合法
會員,才能取得授權來進入特定網頁。
13-1-1 ASP.NET會員管理的基礎-使
用者的種類
 一般來說,網站的使用者可以分成三大類,
其說明如下所示:



匿名訪客(Anonymous Visitors):不需登入
就可以進入網站的使用者,它不是會員,所以
並不能使用會員專屬的網站服務,即進入會員
才允許進入的網頁。
會員(Members):需要登入且經過驗證程序
確認身份的使用者,擁有權限可以使用會員的
專屬服務,進入會員專屬網頁。
管理者(Administrators):網站的超級使用者,
它是網站的管理者,擁有權限來新增或刪除網
站會員,和授予會員的權限。
13-1-1 ASP.NET會員管理的基礎-會
員管理的功能
 ASP.NET會員管理的功能主要有兩個部分,
如下所示:


確認使用者身份:判斷使用者是否為會員後,
才授權使用者進入網站,ASP.NET預設提供表
單基礎驗證來確認使用者的身份。
儲存會員資料:因為會員需要確認身份才能進
入網站,所以會員需要先註冊,然後將註冊資
料儲存起來,以便檢查是否為合法會員。
ASP.NET預設使用SQL Server Express資料庫
來儲存會員資料。
13-1-2 ASP.NET表單基礎驗證驗證和授權
 驗證(Authentication):驗證是確認請求
的程序,可以用來檢查使用者身份,通常
是以使用者名稱和密碼來確認使用者的身
份。
 授權(Authorization):授權是當使用者身
份已經驗證後,可以授予擁有進入哪些網
頁和資源的權限。
13-1-2 ASP.NET表單基礎驗證說明
 ASP.NET的表單基礎驗證(Forms-based
Authentication)是在1.0/1.1版就提供的驗
證方式,它是使用Web Form表單來取得使
用者名稱和密碼後,以Membership類別方
法來檢查使用者身份,確認使用者是否允
許進入網站,即執行使用者的登入程序。
 會員資料庫可以使用web.config檔案、XML
文件或資料庫來儲存會員資料,預設是使
用SQL Server Express資料庫來儲存驗證
所需的會員資料。
13-1-3 ASP.NET的會員管理功能
 ASP.NET提供登入控制項建立相關註冊和
登入表單,可以使用Membership API來驗
證使用者,或角色(Roles)建立群組權限
的會員管理,其提供的會員管理功能,如
下所示:




使用者登入和會員管理控制項。
Membership API。
角色管理(Role Manager)。
Web介面的會員管理工具。
13-2 啟用ASP.NET的會員管理
建立會員專屬網頁的資料夾
 13-2-2 啟用會員管理和建立會員資料庫
 13-2-3 新增使用者
 13-2-4 啟用與新增角色
 13-2-5 指定角色的權限
 13-2-6 指定使用者所屬的角色
 13-2-1
13-2-1 建立會員專屬網頁的資料夾說明
對於會員管理的ASP.NET網站來說,雖然我們可
以指定個別ASP.NET網頁的權限,不過,在實作
上,通常都是以資料夾為單位來進行ASP.NET網
頁的管理,也就是替會員專屬的ASP.NET網頁建
立資料夾,只允許會員瀏覽的網頁就置於此資料
夾。
 例如:網站使用者通常分為三大類,匿名訪客可
以瀏覽網站根目錄的ASP.NET網頁,會員專屬網
頁是在Member子資料夾,管理者是Admin子資料
夾。

13-2-1 建立會員專屬網頁的資料夾建立資料夾

開啟「方案總管」視窗,在網站根目錄上,執行
右鍵快顯功能表的【新增資料夾】指令,可以看
到預設建立名為NewFolder?的子資料夾,如下圖
所示:
13-2-2 啟用會員管理和建立會員資
料庫-步驟一

在VWD可以啟動Web網站管理工具,直接使用此工具來
啟用會員管理和建立會員資料庫,如下圖所示:(網站
/asp.net組態)
13-2-2 啟用會員管理和建立會員資
料庫-步驟二
13-2-2 啟用會員管理和建立會員資
料庫-完成啟用
 在完成啟用會員管理後就會返回Web網站
管理工具,在下方「使用者」框看到網站
已經啟用會員管理,但是目前並沒有任何
使用者,如下圖所示:
13-2-2 啟用會員管理和建立會員資
料庫-web.config組態檔
 在網站根目錄新增web.config組態檔,可以
看到在<authentication>標籤啟用ASP.NET
表單基礎驗證,如下所示:
<system.web>
<authentication mode="Forms" />
</system.web>
 上述<authentication>標籤使用mode屬性指
定驗證方式,屬性值Forms就是表單基礎驗
證。
13-2-3 新增使用者

在啟用會員管理和建立會員資料庫後,我們就可
以使用Web網站管理工具來新增使用者,如下圖
所示:
13-2-4 啟用與新增角色-啟用角
色

對於大量會員的ASP.NET網站來說,我們可以群
組使用者成為角色,直接設定角色權限來快速建
立會員網站所需的權限設定。筆者準備在
ASP.NET網站啟用角色管理後,新增Admin和
Member二種角色,如下圖所示:
啟用角色
13-2-4 啟用與新增角色-新增角色
 在ASP.NET網站啟用角色管理後,新增
Admin和Member二種角色,如下圖所示:
輸入角色名稱
13-4-4 啟用與新增角色-web.config
組態檔
 ASP.NET啟用角色就是在web.config組態檔
加上<roleManager>標籤,enabled屬性
true表示啟用角色管理,如下所示:
<roleManager enabled="true" />
13-2-5 指定角色的權限新增存取規則

ASP.NET網站的角色權限主要是設定目錄的存取
權限,例如:指定只有Member角色允許存取
「Member」子目錄;Admin角色允許存取
「Admin」子目錄,其步驟如下所示:
左邊框選【Member】
目錄,右邊選角色
【Member】和權限
【允許】
選【Member】目錄,新
增【所有使用者】和
【拒絕】權限的規則
13-2-5 指定角色的權限-web.config
組態檔
 在「Member」目錄下就會新增web.config
組態檔,並且在<authorization>標籤新增存
取規則的<allow>和<deny>標籤,如下所示:
<system.web>
<authorization>
<allow roles="Member" />
<deny users="*" />
</authorization>
</system.web>
13-2-6 指定使用者所屬的角色

在設定角色權限後,我們就可以指定使用者所屬
的角色。例如:使用者joe和tom屬於Member角
色;jane是Admin角色,如下圖所示:
13-3 登入控制項





13-3-1 Login控制項
13-3-2 LoginView、LoginStatus和LoginName控
制項
13-3-3 PasswordRecovery控制項
13-3-4 ChangePassword控制項
13-3-5 CreateUserWizard控制項
13-3-1 Login控制項-說明

Login控制項可以建立登入網站的表單,提供使用
者名稱和密碼的標準登入表單。Login控制項的常
用屬性說明,如下表所示:
屬性
TitleText
CreateUserText
CreateUserUrl
PasswordRecoveryText
PasswordRecoveryUrl
DestinationPageUrl
說明
標題文字
新增使用者帳號的超連結文字
指定 URL 網址來新增使用者,通常是擁有
CreateUserWizard 控制項的 ASP.NET 網頁
處理忘記密碼的超連結文字
指定 URL 網址處理忘記密碼,通常是擁有
PasswordRecovery 控制項的 ASP.NET 網頁
指定成功登入後連接的 URL 網址
13-3-1 Login控制項-範例網站
ASP.NET網站:Ch13-3

在ASP.NET網頁Login.aspx新增Login控制項後,
更改相關屬性來建立會員登入網頁,如下圖所示:
Login控制項
13-3-2 LoginView、LoginStatus和
LoginName控制項-LoginStatus

LoginStatus控制項是用來顯示登入狀態,如為匿
名使用者就顯示登入網站的超連結;如果已經登
入就顯示登出網站超連結。LoginStatus控制項的
常用屬性,如下表所示:
屬性
LoginText
LogoutText
LogoutAction
LogoutPageUrl
說明
登入網站超連結的標題文字
登出網站超連結的標題文字
對於登出網站超連結,可以設定其按下行為是 Refresh、
Redirect 或 RedirectToLoginPage
LogutAction 屬性是 Redirect 時,設定轉址的 URL 網址
13-3-2 LoginView、LoginStatus和
LoginName控制項-LoginName
 LoginName控制項就是在成功登入網頁後,
在網頁顯示登入會員的使用者名稱。
LoginView控制
項
LoginName控
制項
13-3-2 LoginView、LoginStatus和
LoginName控制項-LoginView

LoginView控制項可以建立不同登入檢視的網頁內
容,它是依據使用者是登入會員、匿名使用者和
不同的角色,來顯示不同的網頁內容。換句話說,
LoginView控制項可以建立網站首頁,依登入使用
者的身份來顯示專屬的網頁內容。
 在LoginView控制項的每一個RoleGroup控制項,
可以使用Roles屬性定義一種角色的網頁內容,
AnonymousTemplate樣板是建立匿名使用者看到
的網頁內容;LoggedInTemplate樣板是登入網站
會員顯示的內容。
13-3-2 LoginView、LoginStatus和
LoginName控制項-新增RoleGroup控制項

開啟「LoginView工作」功能表,選【編輯
RoleGroups】超連結,可以看到「RoleGroup集
合編輯器」對話方塊。
新增角色
13-3-2 LoginView、LoginStatus和
LoginName控制項-AnonymousTemplate
 選【LoginView】控制項開啟「LoginView
工作」功能表,在【檢視】欄選
【AnonymousTemplate】,然後輸入匿名
使用者顯示的網頁內容。
13-3-2 LoginView、LoginStatus和
LoginName控制項-LoggedInTemplate
 在「LoginView工作」功能表的【檢視】欄,
選【LoggedInTemplate】,然後輸入登入
使用者顯示的網頁內容,在換行後新增
LoginName控制項,即[使用者名稱]。
13-3-2 LoginView、LoginStatus和
LoginName控制項-角色樣板

在【檢視】欄選【RoleGroup[0] - Admin】,然後
輸入Admin角色顯示的網頁內容,在換行後新增
LoginName控制項。

在【檢視】欄選【RoleGroup[0] - Member】,然
後輸入Member角色顯示的網頁內容,在換行後
新增LoginName控制項。
13-3-2 LoginView、LoginStatus和
LoginName控制項-範例網站
ASP.NET網站:Ch13-3

在ASP.NET網頁Default.aspx新增LoginStatus、
LoginName和LoginView控制項,並且更改相關
屬性值來建立網站首頁,可以依據使用者是登入
會員、匿名使用者和不同角色,來分別顯示不同
的網頁內容,如下圖所示:
13-3-3 PasswordRecovery控制項說明

PasswordRecovery控制項可以自動連接
ASP.NET會員管理機制,當使用者忘記密碼時,
以密碼問題和答案來重新取得新密碼。不過,系
統只能授了新密碼,並不能取回使用者設定的舊
密碼。
 因為PasswordRecovery控制項取得的新密碼是使
用電子郵件寄送,所以在建立PasswordRecovery
控制項前,我們需要先設定SMTP伺服器。
PasswordRecovery
控制項
13-3-3 PasswordRecovery控制項設定SMTP伺服器
 在「SMTP設定」
框選【設定SMTP
電子郵件設定】超
連結,可以看到設
定SMTP的Web
Form表單,如右
圖所示:
13-3-3 PasswordRecovery控制項範例網站
ASP.NET網站:Ch13-3

在ASP.NET網站設定好SMTP伺服器後,就可以
開啟PasswordRecovery.aspx網頁來新增
PasswordRecovery控制項,並且指定自動化格式,
如下圖所示:
13-3-4 CreateUserWizard控制項-說
明
 在ASP.NET網頁新增CreateUserWizard控
制項,就可以提供網站新增會員的功能。
CreateUserWizard
控制項
13-3-4 CreateUserWizard控制項-屬
性
 CreateUserWizard控制項的常用屬性說明,
如下表所示:
屬性
DisplayCancelButton
CancelDestinationPageUrl
ContinueDestinationPageUrl
說明
是否顯示取消鈕
設定取消後連接的 URL 網址
指定成功新增會員後,連接的 URL 網址
13-3-4 CreateUserWizard控制項-範
例網站
ASP.NET網站:Ch13-3

在ASP.NET網頁CreateUserWizard.aspx新增
CreateUserWizard控制項,並且設定自動化格式
和相關屬性來完成控制項的建立,如下圖所示:
13-3-5 ChangePassword控制項-說
明
 在ASP.NET網頁新增ChangePassword控
制項,就可以建立更改使用者密碼的功能,
控制項的DisplayUsername屬性可以設定是
否顯示使用者名稱的欄位。
ChangePassword
控制項
13-3-5 ChangePassword控制項-範
例網站
ASP.NET網站:Ch13-3

在ASP.NET網頁ChangePassword.aspx新增
ChangePassword控制項,並且設定自動化格式
和相關屬性來完成控制項的建立,如下圖所示:
13-4 ASP.NET的個人化程序-說明
 對於網站內容的龐大資訊來說,我們除了
替網站資訊進行分類管理外,網站應該提
供個人化功能,可以讓會員存取有興趣資
訊,並且設定喜好外觀來建立個人風格的
資訊平台。
13-4 ASP.NET的個人化程序-個人化
的目的
 個人化的最主要原因是基於營利考量,因
為網站內容有些可能是付費內容,只允許
付費會員存取,或是不同等級的會員擁有
不同的權限,可以檢視不同的網頁內容。
 個人化的最終目的是提供個人化網路經驗,
網站能夠提供使用者網路使用經驗,例如:
在Amazon買書時,網站能夠提供喜好圖書
的建議清單,這是從會員網路消費經驗中,
分析出的網路經驗。
13-4 ASP.NET的個人化程序-個人化
功能

ASP.NET網站如果需要提供個人化功能,其主要
的工作如下所示:



識別使用者的身份:網站需要能夠識別出是匿名使用
者或網站會員,並且提供機制可以監控會員在瀏覽網
站過程中的需求,以便馬上提供回應。當然網站必須
擁有會員管理功能,可以新增和管理使用者。
儲存使用者相關資訊:網站除了儲存使用者資料外,
還需要儲存網路使用經驗的喜好和記錄資料,例如:
色彩、外觀、有興趣主題、瀏覽或購買的商品清單等。
提供個人化經驗:個人化經驗除了依照使用者身份來
提供不同的存取權限外,還包含自訂畫面、追蹤使用
者瀏覽經驗和消費資訊等。
13-5 Profile物件的個人化
定義Profile物件的屬性
 13-5-2 Profile物件的簡單屬性
 13-5-3 Profile物件的群組屬性
 13-5-1
13-5-1 定義Profile物件的屬性-說明
 Profile物件是ASP.NET
2.0版的新功能,可
以取代Session物件來追蹤使用者狀態。
 Profile物件的屬性是在Web組態檔
Web.config定義,它是Web應用程式希望
儲存的使用者專屬資料。
 在ASP.NET系統提供相關機制,預設是使
用SQL Server Express資料庫,可以自動
在跨網頁瀏覽時,讓ASP.NET程式存取
Profile物件儲存的資料。
13-5-1 定義Profile物件的屬性-在
web.config組態檔定義Profile物件屬性
<profile enabled="true">
<properties>
<add name="Name"
defaultValue="Huey-An Chen"
type="String"/>
<group name="Student">
<add name="StudentId" type="Int32"/>
<add name="Name" type="String"/>
<add name="Score" type="Int32"/>
</group>
</properties>
</profile>
13-5-1 定義Profile物件的屬性Profile物件與ASP.NET會員管理
 Profile物件與ASP.NET會員管理擁有密切
關係,因為Profile物件儲存的資料,預設是
針對指定會員儲存的資料,如此,當使用
者登入網站後,系統才能依據登入會員從
資料庫取出對應的Profile物件。
 為了方便測試本節Profile物件的ASP.NET
網頁,網頁是位在「Member」子目錄,此
目錄限制擁有Member角色權限的會員才能
執行此目錄的ASP.NET網頁,例如:使用
者tom。
13-5-1 定義Profile物件的屬性Profile物件與Session物件的差異
 在第7章的Session物件可以儲存會員的使
用者資訊,不過,Session物件儲存的資料
只在目前交談期有效,當交談期結束,下
一次進入Web應用程式時,仍然需要重新
輸入這些資料,資料並不會自動保留。
 Profile物件能夠自動將使用者資料儲存在永
久儲存媒體,預設是SQL Server Express
資料庫,當下一次進入Web應用程式時,
上一次進入建立或修改的Profile資料能夠自
動取出,並且自動維護這些資料。
13-5-2 Profile物件的簡單屬性-定義
 Profile物件的簡單屬性是指儲存單一資
訊的屬性,在web.config檔案定義
Name簡單屬性,如下所示:
<properties>
<add name="Name"
defaultValue="Huey-An Chen"
type="String"/>
</properties>
13-5-2 Profile物件的簡單屬性-存取
 在ASP.NET網頁可以使用程式碼來存取
Profile物件的屬性值,如下所示:
lblOutput.Text = Profile.Name;
Profile.Name = txtName.Text;
 上述程式碼分別取出和設定Profile物件的
Name屬性,因為Profile物件屬性會持續存
在,換句話說,我們可以在跨網頁瀏覽時,
讓ASP.NET網頁存取Profile物件儲存的資
料。
13-5-2 Profile物件的簡單屬性-範例
網站
ASP.NET網站:Ch13-5-2

在ASP.NET網頁Member/Default.aspx使用
TextBox控制項輸入使用者姓名後,指定Profile物
件的Name屬性值且轉址至Ch13-5-2.aspx,然後
在Ch13-5-2.aspx取出和顯示Profile物件的屬性值,
如下圖所示:
13-5-3 Profile物件的群組屬性-定義
 Profile物件的群組屬性儲存的是一組資訊,
在web.config檔案已經定義Student群組屬
性來儲存學生資訊,如下所示:
<properties>
<group name="Student">
<add name="StudentId" type="Int32"/>
<add name="Name" type="String"/>
<add name="Score" type="Int32"/>
</group>
</properties>
13-5-3 Profile物件的群組屬性-存取
 在ASP.NET網頁可以使用程式碼來存取
Profile物件的屬性值,如下所示:
txtID.Text = Profile.Student.StudentId.ToString();
txtName.Text = Profile.Student.Name;
txtScore.Text = Profile.Student.Score.ToString();
 上述程式碼取出Profile群組屬性Student的
學生資訊StudentId、Name和Score。
13-5-3 Profile物件的群組屬性-存取
ASP.NET網站:Ch13-5-3

在ASP.NET網頁Member/Default.aspx輸入學生
資料後,就會設定Profile物件群組屬性且轉址到
Ch13-5-3.aspx,然後在Ch13-5-3.aspx取出和顯
示Profile物件的群組屬性值,如下圖所示: