Я пытаюсь реализовать хороший JWT
API на основе, так что я уже прочитал кучу документации о JWTs
и как они работают, но я не могу понять несколько вещей:Использование JWT в Laravel
Когда пользователь входит в приложение, я могу передать данные пользователя через JWT
? Например, имя, адрес электронной почты и разрешения пользователя.
Нужно ли передавать все через JWT? Например, получение данных конкретной страницы из базы данных или получение всех сообщений в блоге или что-то похожее на это.
Как мне узнать, есть ли у пользователя разрешение на выполнение этого действия или нет? Как я могу получить данные пользователя из токена?
Я использую Tymon/JWT-Auth library
в этом случае и здесь немного демонстрация того, как мое приложение работает на данный момент:
Пользователь отправляет запрос на запись к API/аутентификации по маршруту, который регистрирует пользователя в и возвращает JWT-токен как json вместе с данными пользователя - имя, адрес электронной почты и разрешения. Таким образом, данные, возвращаемые с сервера выглядит следующим образом:
{
"token": "blablabla",
"user": {
"email": "[email protected]",
"name": "Test User",
"permissions": [ "can_edit_posts", "can_delete_users" ]
}
}
JWT хранится в глобальной переменной в JavaScript называется маркером. Пользовательские данные хранятся в объекте пользователя.
Пользователь переходит на страницу блога let's say. Эта страница отправляет на сервер запрос GET
, который извлекает все сообщения: /blogs?token=[THAT_GLOBAL_VARIABLE_HERE]
Сервер возвращает список всех сообщений. Глобальная переменная токена обновляется тем, что находится в клюшке носителя в заголовке.
Это правильный способ сделать это?