Всем привет. Подскажите схему работы JWT токена. Когда пользователь входит на сайт, сервак ему отдает JWT токен, этот токен имеет срок дейсвия например 20 минут, после чего он считается невалидным. Как должен обновляться JWT токен? Ведь пользователь не будет каждые 20 минут логинется заново на сайте?
при каждой проверке токена - время жизни обновляется. И таки да - если более 20 минут не заходил - придется логиниться
Человек заходит на страницу, например личный кабинет, я отправляю токен на сервер и проверяю его, если все ок, я бери ид человека из токена и делаю необходимые действия с ним, например в базе что-то выбираю, потом результат выборки я должен отправить клиенту и в этом случае я должен сгенерировать новый токен и отправить вместе с результатами выборки? И так при каждом обращении на сервер?
Нет. Обычно фреймворки сами обновляют данные токена. Но если вы свое пишите - то когда вы поняли что все ок, и токен не просрочен - обновляете время жизни токена на сервере (обычно в БД) еще на 20 минут, сам токен при этом не меняется ... по сути ходит то и не токен, а его хеш
Я работаю с Express на nodejs тут нужно все самому делать! что вы имеете в виду "по сути ходит то и не токен, а его хеш" зачем сам токен хранить в бд, если в токен можно положить ид пользователя и брать его оттуда всякий раз когда идет обращение на сервер и обновлять какое-то поле в таблице юрезс? в спецификации jwt есть поле exp - для чего оно тогда нужно?
Вроде как фишка в JWT как раз в передаче подписанной информации о роли и правах пользователя. Благодаря этому, сервис который принял токен не нуждается в системе авторизации, а должен лишь валидировать подпись.
Под Express нет готовой миддлвари для JWT? Не верю! (с) ))) https://github.com/auth0/express-jwt connect/express middleware that validates a JsonWebToken (JWT) and set the req.user with the attributes 3.3k звезд прошу любить и жаловать )))