У меня есть вопрос относительно передачи ролей / разрешений в JWT.
Так как я хочу быть без состояния с хорошей производительностью, я хочу сохранить роли / разрешения внутри JWT, который я передаю клиенту.
Для веб-запроса я помещу JWT в файл cookie, а для API остальных я верну JWT в теле ответа.
Что произойдет в случае изменения пользовательских ролей / разрешений?
Одним из решений, о котором я подумал, является добавление поля TTL (время жизни) в полезную нагрузку JWT.
Для веб-запроса в следующем запросе веб-браузера я получу jwt из cookie-файла, распакую его, и в случае прохождения TTL я обновлю роли пользователя в JWT и верну обратно в cookie-файл, который я отправлю обратно в ответ.
Но что мне делать в вызовах Rest API? Есть ли общее решение для этого? Для вызовов API у меня нет такого механизма, как веб-запрос, чтобы браузер автоматически брал cookie из ответа и сохранял его в браузере.
Я подумал, может быть, добавить новый JWT в заголовок ответа, но, в отличие от веб-браузера, я не могу гарантировать, что клиент примет новый JWT, что может вызвать несколько проблем:
1. Клиент не будет осведомлен о новых ролях и может принимать неправильные решения на его стороне
2. Клиент может отправить старую JWT снова, что может заставить серверную часть обновлять роли снова и снова (я хочу, чтобы на стороне сервера не было состояния)
пожалуйста, совет.
спасибо!