3
3eJIeHbIu7 ноября 2021 г. 7:02

Авторизация в приложении.

Подскажите пожалуйста, в каком направлении работать. Необходимо реализовать форму для авторизации в приложении. Пользователь вводит пароль и логин и работает с приложением, после нажимает кнопку сохранить и выходит. Как лучше реализовать, с QSettings или с БД? Помогите разобраться, не знаю с чего начать.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

20
IscanderChe
  • 7 ноября 2021 г. 7:05

БД + хэширование паролей.

    3
    • 7 ноября 2021 г. 7:08

    Какую бд оптимальнее всего использовать в Qt?

      IscanderChe
      • 7 ноября 2021 г. 7:12

      Это зависит от задач. Проще всего - SQLite.

        3
        • 7 ноября 2021 г. 7:30

        Самые простые задачи, в разных ячейках - разные значения. Отнимать, прибавлять.

          3
          • 10 ноября 2021 г. 14:42

          А в бд как? Строка - логин, столбик - пароль?

            IscanderChe
            • 10 ноября 2021 г. 14:50

            Не строка-столбик, а поле. У БД есть только поле, имеющее соответствующее наименование. Ну, в табличных терминах, заголовки таблицы и ячейки. В поле логина можете хранить прямые данные, а вот в поле пароля - только хэш пароля. Это нужно, чтобы его не взломали. Если БД взломают, то открыто хранимые пароли будут доступны взломщику. Хэш шифрует пароль теоретически невосстанавливаемо. По крайней мере, за разумное время.

              3
              • 22 ноября 2021 г. 11:23

              Направьте пожалуйста в нужное русло. Вник в основные аспекты БД. Как применить это в Qt? Поле ввода line edit используется для этих целей? И как это выражается в синтаксисе. Чтобы данные с line edit попадали в таблицу БД. В консоли работаю с mysql, а в Qt не могу разобраться.

                IscanderChe
                • 22 ноября 2021 г. 11:38
                • (ред.)

                Начните с SQLite, проще реализовать создание БД и её последующее редактирование через код. На этом портале есть несколько примеров, изучите их.

                QLineEdit используется, само собой. Ведь для авторизации надо логин-пароль как-то вводить. И QPushButton нужна, чтобы по нажатию на неё передать данные приложению. Привязываете через сигнально-слотовое соединение нажатие на кнопку к слоту проверки пары логин-пароль, а в слоте извлекаете данные из БД и сравниваете с пользовательским вводом.

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

                  IscanderChe
                  • 22 ноября 2021 г. 16:01

                  Чуть попозже накидаю простенький примерчик.

                    IscanderChe
                    • 23 ноября 2021 г. 4:46

                    Ловите, изучайте.
                    SimpleAutorization.zip SimpleAutorization.zip

                      3
                      • 23 ноября 2021 г. 12:02

                      Спасибо большое.

                        3
                        • 23 ноября 2021 г. 12:43

                        Я немного не понял, сущности sqlite для работы с этой субд в Qt надо дополнительно скачивать или нет?

                          IscanderChe
                          • 23 ноября 2021 г. 14:01

                          Ничего не надо скачивать, всё должно работать "из коробки".

                            3
                            • 1 декабря 2021 г. 11:48

                            Пытаюсь разобраться в вашем примере и понял то что просто пытаюсь скопировать ваш код себе и запустить, но я так не хочу. Хочу разобраться в нём до каждой инструкции, только вот не получается. Есть незнакомые сущности, какая инструкция за что отвечает. Знаком с С++ и с ООП но реверс-инженеринг провести немогу) Подскажите пожалуйста, как набить руку в этом.

                              U
                              • 2 декабря 2021 г. 2:19

                              "Хочу разобраться в нём до каждой инструкции"
                              Хотите разобраться - разбирайтесь)) Как? Увидели метод, который вызывает интерес => нажали левой кнопкой мыши на него => нажали f1 => прочитали в открывшемся хелпе, что метод делает и как.
                              Такой же подход к классам и сущностям))

                              Все программисты так работают) Никто не помнит наизусть все классы и методы, все принимаемые и возвращаемые значения... Все жмут f1 и читают)
                              И это не реверс-инженеринг... Это обычное чтение кода...
                              "Чукча не читатель, чукча писатель" - это не про Вас должно быть)

                                IscanderChe
                                • 2 декабря 2021 г. 10:57

                                Undergiven верно всё написал. В комплект поставки Qt входит приложение Assistant, там полный хелп по языку, им и пользуйтесь.

                                Я тоже не вдруг начал кодить на Qt. Постепенно, с простейших примеров, "дорос" вот до этого. Помочь может только практическое применение, других метод не придумано.

                                  3
                                  • 2 декабря 2021 г. 11:12

                                  спасибо.

                                    3
                                    • 10 декабря 2021 г. 12:15
                                    • (ред.)

                                    Я правильно понимаю, autorizationdialog родительское окно в котором происходит регистрация, widget - производное? Или в widget происходит регистрация а в autorizationdialog уже когда вошёл в бд?

                                      IscanderChe
                                      • 11 декабря 2021 г. 0:41

                                      Регистрацию я не реализовывал, только авторизацию пользователя. Это вы сами думайте над регистрацией, ничего сложного там нет. Те же формы с кнопками, только функционал немножко другой. Ну, и запрос к базе данных на запись.

                                      widget - основной, с него начинается работа программы. autorizationdialog - вызывается по нажатию на кнопку "Войти" (m_autorizeButton).

                                        3
                                        • 11 декабря 2021 г. 0:49
                                        • (ред.)

                                        Спасибо, разобрался. Единственный момент, С++ сложный как язык. Море моментов где можно запутаться и программа будет подвисать. Оптимизации всякие.

                                          Комментарии

                                          Только авторизованные пользователи могут публиковать комментарии.
                                          Пожалуйста, авторизуйтесь или зарегистрируйтесь
                                          e
                                          • ehot
                                          • 31 марта 2024 г. 14:29

                                          C++ - Тест 003. Условия и циклы

                                          • Результат:78баллов,
                                          • Очки рейтинга2
                                          B

                                          C++ - Тест 002. Константы

                                          • Результат:16баллов,
                                          • Очки рейтинга-10
                                          B

                                          C++ - Тест 001. Первая программа и типы данных

                                          • Результат:46баллов,
                                          • Очки рейтинга-6
                                          Последние комментарии
                                          k
                                          kmssr8 февраля 2024 г. 18:43
                                          Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                                          АК
                                          Анатолий Кононенко5 февраля 2024 г. 1:50
                                          Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                                          EVA
                                          EVA25 декабря 2023 г. 10:30
                                          Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                                          J
                                          JonnyJo25 декабря 2023 г. 8:38
                                          Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
                                          G
                                          Gvozdik18 декабря 2023 г. 21:01
                                          Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
                                          Сейчас обсуждают на форуме
                                          a
                                          a_vlasov14 апреля 2024 г. 6:41
                                          Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
                                          Павел Дорофеев
                                          Павел Дорофеев14 апреля 2024 г. 2:35
                                          QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь
                                          f
                                          fastrex4 апреля 2024 г. 4:47
                                          Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
                                          P
                                          Pisych27 февраля 2023 г. 4:04
                                          Как получить в массив значения из связанной модели? Спасибо, разобрался:))
                                          AC
                                          Alexandru Codreanu19 января 2024 г. 11:57
                                          QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…

                                          Следите за нами в социальных сетях