登录控制事件的问题

时间:2011-07-11 12:45:28

标签: c# asp.net login-control

我想在用户登录后立即检查他是否被禁止..但我有以下问题:

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

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

5 个答案:

答案 0 :(得分:1)

在这里做:

protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)

答案 1 :(得分:1)

使用Login.Authenticate事件查明用户是否被禁止。

答案 2 :(得分: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)

答案 3 :(得分:0)

如果用户在Web应用程序中进行了身份验证,则Login.Authenticate将返回true

答案 4 :(得分:0)

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

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