2011-07-11 101 views
0

我希望儘快在他是否禁止或沒有用戶登錄有一張支票。但我有以下問題:問題的登錄控制事件

protected void Login1_LoggedIn(object sender, EventArgs e) 
{ 
    MembershipUser CurrentUser = Membership.GetUser(); 
    Guid i = (Guid)CurrentUser.ProviderUserKey; //CurrentUser is null 
    if (UsefulStaticMethods.CheckIfUserISbanned(i)) 
    { 
     Server.Transfer("~/Banned.aspx"); 
    } 
} 

如何獲得當前用戶只要他登錄?

回答

1

這裏開始:

protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e) 

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 
+0

它仍然拋出在這兩個事件中的零點例外。 – WithFlyingColors

1

使用Login.Authenticate事件,找出被用戶禁止或不。如果用戶在Web應用程序認證

0

Login.Authenticate返回true

1

由於Mantrork說,最好的辦法是覆蓋

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 

此時Membership.GetUser()將是空白但是,用戶尚未完成身份驗證。相反,您需要從登錄控件中提取用戶名;

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 
{ 
    bool Authenticated = false; 
    Authenticated = Membership.ValidateUser(Login1.UserName, Login1.Password) && 

    if (Authenticated) 
    { 
     MembershipUser user = Membership.GetUser(Login1.UserName); 
     Guid i = (Guid)user.ProviderUserKey; //CurrentUser is null 
     if (UsefulStaticMethods.CheckIfUserISbanned(i)) 
     { 
      Server.Transfer("~/Banned.aspx"); 
     } 
    } 

    e.Authenticated = Authenticated; 
} 

(代碼是從我的頭頂,所以無法通過VS跑)

0

如果您Login1是標準的asp:登錄控制可以使用:

MembershipUser CurrentUser = Membership.GetUser(LoginUser.UserName);