Я создаю свое первое приложение-флаттер, приложение будет работать в автономном режиме, но будет иметь функцию локального входа.Администратор сможет выполнять разные задачи после входа в систему. Я хотел создать сеанс, который действителен в течение часа.
В идеале пользователь войдет в систему один раз, затем он сможет получить доступ к панели инструментов без повторного ввода имени пользователя и пароля в течение следующего часа.
Я сделал большую частьвещи, но я скучаю или делаю что-то не так.
Вот что я сделал:
- Создание токена сеанса с использованием функции
Random
при входе пользователя в систему - Токен хранится в базе данных SQLite,вместе с другой информацией (user_id, login_time, token_valid_time) [token_valid_time = login_time + час]
- Токен также хранится в общих настройках.
- Имеет функцию
isValidSession
, которая выполняет функциюследующие задачи: - получить токен сеанса из общих настроек
- выполнить поиск в базе данных для токена
- extract
token_valid_time
и сравнить его с текущим временем, возвращаемым - результат, основанный на текущем времени
- В
main.dart
файле я вызываю isValidSession()
- , если сеанс действителен, тогда я вызываю
HomePage()
, и если он не действителензатем вызывается LoginPage()
.
Функция входа в систему работает нормально, но когда приложение закрывается и открывается снова;он показывает LoginPage()
вместо HomePage()
.
Скажите, пожалуйста, где ошибка и как ее исправить?Кроме того, было бы замечательно, если бы кто-то сказал мне, если это правильный подход ИЛИ его можно улучшить.
ПРИМЕЧАНИЕ: я не публиковал код, потому что он включает в себя различные файлы и много кода.Просмотр и понимание могут занять много времени, поэтому я объяснил все в псевдокоде.