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 事件来确定用户是否被禁止。

于 2011-07-11T13:04:07.597 回答
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 回答
1

在这里做:

protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)

或者

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
于 2011-07-11T12:55:55.887 回答
0

如果您的 Login1 是标准的 asp:Login 控件,您可以使用:

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

如果用户在 Web 应用程序中通过身份验证,Login.Authenticate 返回 true

于 2011-07-11T13:09:37.563 回答