登录控件事件出现问题

本文关键字:问题 事件 控件 登录 | 更新日期: 2023-09-27 18:01:57

我想在用户登录时检查一下他是否被禁止了。但我有以下问题:

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

如何在当前用户登录后立即获得当前用户?

登录控件事件出现问题

从这里开始:

protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)

使用Login。验证事件以确定用户是否被禁止。

正如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运行)

登录。如果用户在web应用程序中被认证,Authenticate返回true

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

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