如果VS2005及VS2008中使用菜單【網站】|【ASP.NET配置】進入使用網站管理工具(WAT)的表單驗證(Forms驗證)方式來建立網站數據庫,默認數據庫名為ASPNETDB.MDF。系統將會自動建立一套系統數據表(VS2008中為11個這樣的數據表),利用這個系統數據表可以快捷地進行創建新用戶、角色、用戶登錄、修改用戶口令等開發。
在后續開發過程中,需要反復使用用戶ID、判斷用戶是否為登錄用戶或者是否為某一角色,這些常用操作如下:
1、獲取當前登錄用戶ID
Membership.GetUser().ProviderUserKey;
上語句可用來獲取當前登錄用戶的ID,在使用時注意調用System.Web.Security命名空間,只有這樣才可以使用MemberShip。如:
using System.Web.Security;
protected void dvNewPost_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
e.Values["UserId"] = Membership.GetUser().ProviderUserKey;
}
上例的意思是將當前登錄用戶的ID插入到最新的記錄中。
2、判斷用戶是不是登錄
使用User.Identity.IsAuthenticated,該值是一個布爾值,如果用戶已經登錄(即通過身份驗證),該值為true,否則為false。如:
protected void Page_Load(object sender, EventArgs e)
{
if (!User.Identity.IsAuthenticated)
Response.Redirect("Index.aspx");
}
上例的意思是如果用戶沒有登錄(!User.Identity.IsAuthenticated = true, 注意前邊有Not運算符!),則重定向到主頁Index.aspx,即用戶無法進入本頁面。如果用戶為登錄用戶,則本代碼不執行,進入本頁面。
3、判斷用戶是不是某角色用戶
使用User.IsInRole("Admin")。User.IsInRole("Admin")是一個布爾值,如果用戶是Admin角色,則返回true,否則返回false。如:
protected void Page_Load(object sender, EventArgs e)
{
if (!User.IsInRole("Admin"))
Response.Redirect("Index.aspx");
}
上例是一個網站管理員(Admin角色)專用頁面的page_load事件。如果用戶是網站管理員,則不執行代碼,直接進入本網站管理員專用頁面。如果用戶不是網站管理員,則重定向到主頁Index.aspx,無法進入本網站管理員專用頁面。
4、當前登錄用戶的用戶名
使用HttpContext.Current.User.Identity.Name獲取
比如設置一個屬性,獲取當前用戶名
public string CurrentUserName
{
get
{
string userName = "";
if (HttpContext.Current.User.Identity.IsAuthenticated)
userName = HttpContext.Current.User.Identity.Name;
return userName;
}
}
4、當前登錄用戶的IP地址
使用HttpContext.Request.UserHostAddress獲取