3
3eJIeHbIuNov. 7, 2021, 7:02 a.m.

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

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

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
20

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

3

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

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

3

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

3

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

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

3

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

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

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

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

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

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

3

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

3

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

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

3

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

U

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

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

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

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

3

спасибо.

3

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

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

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

3

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

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Fornex

Let me recommend you a great European Fornex hosting.

Fornex has proven itself to be a stable host over the years.

For Django projects I recommend VPS hosting

Following the link you will receive a 5% discount on shared hosting services, dedicated servers, VPS and VPN

View Hosting
Share on social networks
Donate

The EVILEG project has switched to a non-commercial basis and will develop solely on the enthusiasm of the site creator, the enthusiasm of users, donations and the hosting referral system

Thank you for your support

Available ways to support the project

PayPal

PatreonYandex.MoneyMore
ni

C++ - Test 001. The first program and data types

  • Result:33points,
  • Rating points-10
ni

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

  • Result:35points,
  • Rating points-10
AK

C++ - Test 005. Structures and Classes

  • Result:66points,
  • Rating points-1
Popular publications in the last 90 Days
Last comments

Qt/C++ - Lesson 027. Polymorphism in Qt by the example of geometric shapes in QGraphicsScene

Ну не видя вашего кода, сказать, где у вас ошибка невозможно. А что касается перетаскивания и разных манипуляций, то можете распотрошить код векторного редактора из этой статьи Qt/C++…
K
  • Kolja
  • May 22, 2022, 6:32 a.m.

Qt/C++ - Lesson 027. Polymorphism in Qt by the example of geometric shapes in QGraphicsScene

Крутой урок! Но как только захотел добавить функцию выделение объекта ( подразумевается перемещение и изменение размера) ничего не получается . Читал что нужно включить флаги ItemIsSelected и It…

Django - Tutorial 023. Like Dislike system using GenericForeignKey

Недостаток GenericForeignKey в том, что они достаточно плохо оптимизируются, поэтому я решил это с помощью кэширования. Собственно говоря, эти проблемы и послужили возникновению специальног…

PyQt5 - Tutorial 009. Using QThread with MoveToThread

Попробуйте принудительно вызывать сигнал started у потока. Это является потокобезопасным. И в данном случае вызов сигнала started должно запустить выполнения метода run, а потом продолжить выпол…
O
  • Otaku
  • May 16, 2022, 11:33 a.m.

PyQt5 - Tutorial 009. Using QThread with MoveToThread

Решение хорошее, сейчас так и делаю. Но все равно остается открытым вопрос подвязки ивента из вне. Проще говоря, не хочется гонять вечный цикл в run, постоянго проверяя изменения очереди (пусть …
Now discuss on the forum
AB

Sorting the added QML elements in the ListModel

I am writing an alarm clock in QML, I am required to sort the alarms in ascending order (depending on the date or time (if there are several alarms on the same day). I've done the sorting …
EK

HTTP server на Qt

Давно было, уже не помню как, но разрулил. Спасибо :)

Django MPTT вывод дерева категорий

Здраствуйте похоже я так и не понял всю суть Django-MPTT батарейки. Так как не могу решить простую задачу с выводом категорий. По этому обращаюсь к вам за помощью. Начну с начала. Изначальн…
AC

QScrollArea и автоматическая прокрутка при обходе элементов формы

Отвечаю сам на свой вопрос. Кому интересно: к примеру в scrollArea_organs_internal есть элементы QLineEdit = spleen_parenchyma (при обходе элементов формы д…
d
  • danya
  • April 26, 2022, 8:13 a.m.

Как вставить видео в QT6 6.3.0?

Я абсолютный новичок в Qt. Столкнулся с проблемой вставки видео. В прошлых версиях надо было подключть к про файлу multimedia. Сейчас пишет ошибку, что multimedia нет. Можете на просто…
About
Services
© EVILEG 2015-2022
Recommend hosting TIMEWEB