Проблема с событием контроля входа - PullRequest
0 голосов
/ 11 июля 2011

Я хочу проверить, как только пользователь войдет в систему, был ли он забанен или нет .. Но у меня следующая проблема:

    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 ]

1 голос
/ 11 июля 2011

Как сказал Мантрорк, лучше всего переопределить

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)

1 голос
/ 11 июля 2011

Используйте событие Login.Authenticate, чтобы узнать, забанен пользователь или нет.

1 голос
/ 11 июля 2011

Сделайте это здесь:

protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)

или

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
0 голосов
/ 11 июля 2011

Если ваш Login1 - стандартный asp: контроль входа вы можете использовать:

0 голосов
/ 11 июля 2011

Login.Authenticate возвращает true, если пользователь аутентифицирован в веб-приложении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...