Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Форма авторизации, не получается выбрать нужную запись для сравнения / 9 сообщений из 9, страница 1 из 1
12.11.2021, 21:57
    #40111558
AlenaLis16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма авторизации, не получается выбрать нужную запись для сравнения
Всем привет. Проблема такая: есть бд, есть форма авторизации, нужно чтобы при верных данных логина и пароля выводилось сообщение об успешном входе. Проблема в том, что когда я делаю запрос и закидываю его результат в стринговую переменную, то значение переменной неверное. Допустим, есть 2 пользователя x1 и x2 и их пароли pas1 и pas2, так вот, при входе с данными x1 pas1 и x1 pas2 вход проходит успешно, хотя это недопустимо. Также вход проходит по аналогии у 2 пользователя с данными x2 pas1 и x2 pas2. Как поправить код? Нужно использовать приницпиально эти конструкции. Мучаюсь уже долго, может поможете.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
private void EnterButtonClick(object sender, RoutedEventArgs e)
        {
            try
            {
                string UserLogin = Data.vtbBDEntities.GetContext().users
                    .Select(user => user.login)
                    .Select(login => login)
                    .Where(login => login == LoginTextBox.Text).First();

                string UserPassword = Data.vtbBDEntities.GetContext().users
                        .Select(users => users.password)
                        .Select(password => password)
                        .Where(password => password == PasswordBox.Password).First();

                if (UserLogin == LoginTextBox.Text && UserPassword == PasswordBox.Password)
                {
                    MessageBox.Show("Успешный вход!", "Инфо", MessageBoxButton.OK, MessageBoxImage.Information);
                } else
                {
                    MessageBox.Show("Вход не выполнен!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Вход не выполнен!", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            }
...
Рейтинг: 0 / 0
13.11.2021, 01:05
    #40111621
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма авторизации, не получается выбрать нужную запись для сравнения
Код: c#
1.
2.
3.
4.
5.
if (Data.vtbBDEntities.GetContext().users.Any(user => user.login == LoginTextBox.Text
      && user.password == PasswordBox.Password))
{
...
}


Но
1) Нельзя хранить пароли в БД в открытом виде
2) Логин сравнивают обычно без учета заглавных/строчных, а пароль - обязательно с учетом
3) В 2021 году надо использовать async и await ... AnyAsync(...)
...
Рейтинг: 0 / 0
13.11.2021, 15:09
    #40111702
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма авторизации, не получается выбрать нужную запись для сравнения
Shocker.Pro,

пароли и логины для доступа к БД лучше вообще не использовать. имхо.
не знаю как сейчас, а в 2000 mssql для basic авторизации пароль взламывал на калькуляторе XOR'ом.
лучше integrated security при любых раскладах, имхо.
...
Рейтинг: 0 / 0
13.11.2021, 17:23
    #40111726
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма авторизации, не получается выбрать нужную запись для сравнения
Roman Mejtes
пароли и логины для доступа к БД лучше вообще не использовать. имхо.
ну тут-то речь не идет о пароле доступа к БД очевидно
...
Рейтинг: 0 / 0
13.11.2021, 17:34
    #40111728
AlenaLis16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма авторизации, не получается выбрать нужную запись для сравнения
Roman Mejtes, не-не, в этом вопросе я делаю проект wpf, и логин/пароль просто для входа в приложение
...
Рейтинг: 0 / 0
13.11.2021, 17:38
    #40111729
AlenaLis16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма авторизации, не получается выбрать нужную запись для сравнения
Shocker.Pro, спасибо вам огромное, выручили, а то всю голову сломала уже
...
Рейтинг: 0 / 0
13.11.2021, 19:18
    #40111739
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма авторизации, не получается выбрать нужную запись для сравнения
AlenaLis16,

для хранения пароля в памяти используй SecureString, если пароль надо хранить. используй хранилище Windows, это надежно и безопасно. Хранить сам пароль в памяти не стоит, после авторизации, его лучше "освободить", тогда SecureString затрет все свое содержимое в памяти.
...
Рейтинг: 0 / 0
13.11.2021, 20:05
    #40111746
AlenaLis16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма авторизации, не получается выбрать нужную запись для сравнения
Roman Mejtes, спасибо огромное ещё раз. Нас мало чему учат, так что вот как могу по максимуму сама пытаюсь обучиться)
...
Рейтинг: 0 / 0
13.11.2021, 22:30
    #40111783
SergiiW
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Форма авторизации, не получается выбрать нужную запись для сравнения
MSМы не рекомендуем использовать SecureString класс для новой разработки. Дополнительные сведения см. в разделе SecureString не следует использовать в GitHub.
MSВместо использования SecureString для защиты паролей рекомендуется использовать непрозрачный маркер для учетных данных, хранящихся за пределами процесса.
https://docs.microsoft.com/ru-ru/dotnet/api/system.security.securestring?view=net-5.0
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Форма авторизации, не получается выбрать нужную запись для сравнения / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]