-
Склонируйте репозиторий на вашу локальную машину:
git clone https://github.com/Jhnvlglmlbrt/jwt-auth
-
Перейдите в директорию проекта:
cd jwt-auth
-
Установить зависимости:
go get
-
Запустите код:
make run
-
Клиент (фронтенд) переходит на маршрут, предназначенный для входа - '/login' со своими данными.
-
Декодируем данные из запроса, сравниваем предоставленный пароль (из creds) с ожидаемым паролем в бд (в нашем случае в map). Затем создаём подписанный токен с claims.
-
Отправляем подписанный токен в куки клиента.
-
GET запрос на '/welcome'.
-
Парсинг JWT токена из куки и проверка на валидность.
-
Отправка ответа клиенту с данными пользователя - Username и вывод на экран.
-
POST запрос на '/refresh'.
-
Парсинг JWT токена из куки, проверка на валидность и время истечения токаена. Если до конца истечения времени JWT осталось меньше определённого количества времени, то токен можно обновить, иначе - ошибка StatusBadRequest.
-
В случае удачного обновления JWT токена - отправка клиенту в куки нового JWT токена.
-
Также есть возможность удалить JWT - установить expireTime на time.Now() - токен моментально устареет и пользователю придётся заново логиниться.