Сделать пароль нечувствительным к регистру в общих таблицах членства ASP.Net - PullRequest
0 голосов
/ 01 июня 2010

У меня есть два веб-приложения, которые разделяют таблицы членства ASP.Net.

Все работает отлично, кроме того, что я не могу удалить чувствительность к регистру в одном приложении, как я делаю это в другом.

в нерабочем приложении

void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
{
    string username = Login1.UserName.Trim();
    if (!string.IsNullOrEmpty(username))
    { 
        MembershipUser user = Membership.GetUser(username);
        if (user != null)
        {
            // Only adjust the UserName if the password is correct.  This is more secure
            // so a hacker can't find valid usernames if we adjust the case of mis-cased
            // usernames with incorrect passwords.
            string password = Login1.Password.ToUpper();
            if (Membership.ValidateUser(user.UserName, password))
            { 
                Login1.UserName = user.UserName;
            }
        }
    }
}

не работает. пароль хранится в верхнем регистре. Преобразован в момент создания пользователя членства!

Так что, если пароль - ПАРОЛЬ, ввод ПАРОЛЯ позволяет мне проходить аутентификацию. но вводить пароль нет! Хотя я вижу, что отправляемая строка - это ПАРОЛЬ (преобразуется с помощью toUpper ()).

Я в полном недоумении по этому поводу ... в другом приложении я могу ввести нижний или верхний или смешанный текст, и я могу аутентифицироваться В другом приложении я не использую текстовые поля из входа управления, хотя .. не уверен, если это имеет значение ??

1 Ответ

0 голосов
/ 19 июля 2010

Вы просто проверяете пользователя с помощью пароля ucased, вы не регистрируете его, это происходит на более поздней стадии процесса.

После того, как вы подтвердите пароль UCASE, обновите текстовое поле пароля Login1 с паролем UCASE в том же месте, где вы обновляете имя пользователя.

Кажется, я помню, что пароль доступен только для чтения, поэтому вам нужно использовать что-то вроде этого:

((TextBox)Login1.FindControl(view source to find the login inputs id)).Text = password;

Это должно дать вам результаты, которые вы ищете.

...