2011-07-11 5 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イベントを見つけるために、ユーザーは禁止されたりされていませんさ。

0

Mantrorkはあなたの最善の策は、この時点Membership.GetUser(AT

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 

をオーバーライドすることであると言うように、ユーザがWebアプリケーション

1

で認証されている場合はtrueを返すLogin.Authenticate)が空白になるだろうただし、ユーザーはまだ認証を完了していません。代わりに、あなたのログインコントロールからユーザー名を取得する必要があります。

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); 
関連する問題