在做網站的時候,都會用到用戶登錄的功能。對于一些敏感的資源,我們只希望被授權的用戶才能夠訪問,這讓然需要用戶的身份驗證。對于初學者,通常將用戶登錄信息存放在Session中,筆者在剛接觸到asp.net的時候就是這么做的。當我將用戶信息存在在Session中時,常常會遇到Session丟失導致用戶無法正常訪問被授權的資源,保持用戶登錄狀態時的安全性問題,無休其實,在asp.net中,我們有更好的解決方案,那就是通過Forms身份驗證,從而對用戶進行授權,這種方法可以輕松的保持用戶的登錄狀態(如果用戶想這樣),便捷的用戶授權配置,增強的安全性等好處。廢話不再多說,下面我們來做一個簡單的用
在做例子之前,我們先定義如下用戶類,類名為SampleUser,代碼如下:
public partial class SampleUser { string username; public string UserName { get { return username; } set { username = value; } } string userpwd; public string UserPWD { get { return userpwd; } set { userpwd = value; } } public override bool Equals(object obj) { SampleUser other = obj as SampleUser; if (other == null || other.UserName != this.UserName) return false; return true; } } public partial class SampleUser { public static List<SampleUser> userList = new List<SampleUser> { new SampleUser() { UserName = "01", UserPWD = "123"}, new SampleUser() { UserName = "02", UserPWD = "123" }, new SampleUser() { UserName = "03", UserPWD = "123" }, new SampleUser() { UserName = "04", UserPWD = "123" }, }; public static SampleUser GetUser(string userName) { return userList.Find(u=>u.UserName == userName); } }在類SampleUser中,定義了UserName和UserPWD兩個字段,分別用來存儲用戶的登錄名和密碼信息。在SampleUser類的另一部分中,我們提供了一個用戶的靜態類表,用來代替存儲在數據庫中的用戶信息,提供一個方法GetUser,用來獲取用戶信息。
在這個例子中,我們演示用戶必須進行登錄才能訪問網站的資源,如果沒有登錄,則將用戶導航到login.aspx頁面中。
第一步,在web.config中添加配置信息,說明網站要使用Forms身份驗證,并指定登錄頁面和默認登錄成功后的跳轉頁面,然后指定拒絕未登錄用戶的訪問,代碼如下:
<authentication mode="Forms"> <forms loginUrl="~/Login.aspx" defaultUrl="~/Default.aspx" /> </authentication> <authorization> <deny users="?"/> </authorization>
完成這一步后,我們再打開Default.aspx頁面,在沒有登錄的情況下,頁面會被導航到Login.aspx頁面,我們的第一步的目的已經達到了。
第二步,完成Login.aspx的頁面邏輯。在頁面中添加兩個TextBox控件,用來輸入用戶名和密碼;添加一個CheckBox控件,用來選擇是否保持登錄狀態;添加一個Button控件,響應用戶的登錄操作。相應的代碼如下:
新聞熱點
疑難解答
圖片精選