Как вы можете проверить, если JWT все еще действует? - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу звонить каждые X минут со стороны клиента, чтобы узнать, действителен ли JWT. Я не уверен, как это сделать в nodeJS. Если я уже авторизован, как я могу проверить, авторизован ли я все еще .

Ответы [ 3 ]

0 голосов
/ 13 сентября 2018

Элегантное решение для обработки истечения токена, когда вы устанавливаете токен (в LocalStorage или store (redux), или обоих), также должны иметь функцию Async, которая запускается точно по истечении срока действия токена. Как то так:

const logUserOut = token =>{
    setTimeout(()=> MyLogoutFunction(), token.expiresIn)
}

Таким образом вы гарантируете, что пользователь не будет зарегистрирован, когда токен больше не действителен.

0 голосов
/ 13 сентября 2018

Создание и конечная точка, которая проверяет токен действителен. Вы можете использовать пакет jsonwebtoken.

import jwt from 'jsonwebtoken';

const verifyToken = (req, res) => {
  const token = req.headers.authorization;
  jwt.verify(token, SECRET_KEY, (err, decoded) => {
    if (err) {
      return res.status(401).send();
    }
    // can do something with the decoded data
  })
}

router.post('/verify-token', verifyToken);
0 голосов
/ 13 сентября 2018

Вы можете настроить декодирование JWT на стороне клиента, проверить поле expiry и сравнить его с системным временем.

например.

  isExpired: (token) => {
    if (token && jwt.decode(token)) {
      const expiry = jwt.decode(token).exp;
      const now = new Date();
      return now.getTime() > expiry * 1000;
    }
    return false;

вы можете использовать npm install jsonwebtoken или другой пакет npm на стороне клиента, чтобы сделать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...