來看一下MS的說明
注意:此事件在 .Net Framework 2.0 版中是新增的。
當安全模塊已建立用戶標識時發生。
命名空間:System.Web
程序集:System.Web(在 system.web.dll 中)
在2.0中我們使用成員組及Forms驗證來實現用戶的登錄,但是成員組所提供的功能有時有限.我們需要能訪問到自己定義的個人信息時.這時我們就能利用此事件來處理.
當然Context.User對象是實現IPrincipal, IIdentity這二個接口的.因此只要我們自定義的USER類也能實現此接口,我們就實現了一半了.
yle="FONT-SIZE: 9pt"> return "Froms";
}
}
public bool IsAuthenticated
{
get
{
return true;
}
}
string IIdentity.Name
{
get
{
return this.Name;
}
}
#endregion
#region IPrincipal Members
public IIdentity Identity
{
get
{
return this;
}
}
public bool IsInRole(string role)
{
return false;
}
#endregion
}
用戶實體替換應該發生在HttpApplication的PostAuthenticateRequest事件發生時,因為此時ASP.Net已經從客戶端得到了用戶憑證CookIEONT-FAMILY: 宋體; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">並進行了解密和校驗。
我們既可以編寫一個HttpModule來處理PostAuthenticateRequest事件,也可以在Global.asax文件中添加事件處理器。這裡為了簡單,我們選擇在Global.asax中添加如下事件處理器:
void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpApplication application= (HttpApplication)sender;
if(application.Context.User.Identity.Name != "") // 登錄成功後 {
MyUserObject user ="自己取出對象的處理";
application.Context.User = user;
}
}
下面你就可以在其他頁面訪問到自定義的用戶實體對象了.
MyUserObject user = HttpContext.Current.User as MyUserObject