3
Nov. 7, 2021, 6:02 p.m.

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

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

3

Do you like it? Share on social networks!

20
IscanderChe
  • Nov. 7, 2021, 6:05 p.m.

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

    3
    • Nov. 7, 2021, 6:08 p.m.

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

      IscanderChe
      • Nov. 7, 2021, 6:12 p.m.

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

        3
        • Nov. 7, 2021, 6:30 p.m.

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

          3
          • Nov. 11, 2021, 1:42 a.m.

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

            IscanderChe
            • Nov. 11, 2021, 1:50 a.m.

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

              3
              • Nov. 22, 2021, 10:23 p.m.

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

                IscanderChe
                • Nov. 22, 2021, 10:38 p.m.
                • (edited)

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

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

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

                  IscanderChe
                  • Nov. 23, 2021, 3:01 a.m.

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

                    IscanderChe
                    • Nov. 23, 2021, 3:46 p.m.

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

                      3
                      • Nov. 23, 2021, 11:02 p.m.

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

                        3
                        • Nov. 23, 2021, 11:43 p.m.

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

                          IscanderChe
                          • Nov. 24, 2021, 1:01 a.m.

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

                            3
                            • Dec. 1, 2021, 10:48 p.m.

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

                              U
                              • Dec. 2, 2021, 1:19 p.m.

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

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

                                IscanderChe
                                • Dec. 2, 2021, 9:57 p.m.

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

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

                                  3
                                  • Dec. 2, 2021, 10:12 p.m.

                                  спасибо.

                                    3
                                    • Dec. 10, 2021, 11:15 p.m.
                                    • (edited)

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

                                      IscanderChe
                                      • Dec. 11, 2021, 11:41 a.m.

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

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

                                        3
                                        • Dec. 11, 2021, 11:49 a.m.
                                        • (edited)

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

                                          Comments

                                          Only authorized users can post comments.
                                          Please, Log in or Sign up
                                          • Last comments
                                          • AK
                                            April 1, 2025, 11:41 a.m.
                                            Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                                          • Evgenii Legotckoi
                                            March 9, 2025, 9:02 p.m.
                                            К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                                          • VP
                                            March 9, 2025, 4:14 p.m.
                                            Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                                          • ИМ
                                            Nov. 22, 2024, 9:51 p.m.
                                            Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                                          • Evgenii Legotckoi
                                            Oct. 31, 2024, 11:37 p.m.
                                            Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup