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");
    }
}

現在のユーザーがログインしたらすぐに取得するにはどうすればよいですか?

4

5 に答える 5

1

Login.Authenticate Eventを使用して、ユーザーが禁止されているかどうかを確認します。

于 2011-07-11T13:04:07.597 に答える
1

ここでそれを行います:

protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)

また

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
于 2011-07-11T12:55:55.887 に答える
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 を実行していません)

于 2011-07-11T13:26:10.470 に答える
0

ユーザーがWebアプリケーションで認証されている場合、Login.Authenticateはtrueを返します

于 2011-07-11T13:09:37.563 に答える
0

Login1 が標準の asp:Login コントロールである場合は、次を使用できます。

MembershipUser CurrentUser = Membership.GetUser(LoginUser.UserName);
于 2011-07-11T13:27:39.167 に答える