В моем текущем проекте я использую JWT для поддержки сеанса, я сохранил утверждения пользователя, такие как изображение профиля, имя, фамилия в токене. Однако всякий раз, когда я обновляю пользователя, например, имя пользователя или изображение профиля, мой JWT автоматически устареет, поскольку все еще полагается на сохраненные в нем утверждения.
Я думал о том, чтобы сделать идемпотентный запрос (PUT, PATCH, POST, DELETE), возвращающий новый JWT в дополнение к их первоначальному ответу, но мне пришлось отказаться от этой идеи по двум причинам, потому что
- Решение не RESTful (я эффективно комбинирую запрос на обновление токена с исходным запросом).
- Это нарушает принцип единой ответственности, и мне придется испачкать мои контролеры.
В качестве альтернативы было сохранение моего JWT с минимальными требованиями, а затем при каждой загрузке страницы отправлять запрос на выборку последнего пользовательского объекта перед заполнением страницы, у меня есть опасения по этому поводу, поскольку каждая загрузка будет попадать на сервер как минимум и, возможно, база данных (хотя redis и кэш-память для выполнения должны уменьшить дополнительную нагрузку).
Каковы лучшие практики в этой ситуации?