Здравствуйте. Нужно организовать аутентификацию пользователя. В теле запроса тип входа(логин), логин и пароль. При успешном выполнении получаем токен.
Подскажите алгоритм действий, как правильно организовать?
Привет!
Я не сильно связан с Flutter, но могу привести пример из веба.
Предисловие: У тебя должен быть interceptor (proxy / middleware), где ты будет отслеживать все-все auth-запросы, которые у тебя есть.
1) Когда ты делаешь авторизацию, то у тебя interceptor должен перехватить этот response и достать оттуда данные о токене
2) Этот токен нужно куда-то будет записать (во временное хранилище) + если токен имеет время жизни (т.е. истекает через 15 дней после авторизации), то нужно будет дополнительно написать логику для валидации времени жизни токена (в вебе, к примеру, юзаются cookies, где есть maxAge).
3) Далее, когда у тебя будут идти запросы, которые требуют авторизации, ты перехватываешь запрос с помощью того же interceptor (до момента, пока он не улетел) и впихиваешь в header’s запроса заголовки авторизации (а может быть и не в header, я не знаю как именно у Вас это устроено).
4) В итоге у тебя приложение будет иметь два состояние auth / notAuth. Если юзверь будет обращаться к запросам, которые требуют авторизации, то в первую очередь тебе нужно будет проверять, а существует ли у юзера токен. Т.е. тебе так же нужно будет написать доп. логику на проверку наличия токена
5) Так же нужно будет написать обработчики ошибок для авторизованных запросов, чтобы если вдруг тебе придет 401 ошибка (к примеру из-за того, что сервак сбросил все токены аутентификации и у юзера есть неистекший токен).
Т.е. приходит 401 ошибка -> очищаешь токен у юзера -> кидаешь его на экран авторизации
6) Нюансы: это refresh token - там уже будет гораздо более сложнее механика.