JWT получает информацию о пользователе и устанавливает время истечения - PullRequest
0 голосов
/ 14 ноября 2018

Я использую систему входа в систему на основе токенов JWT, и она работает нормально.

Но мне нужно получить информацию о пользователе на основе токена JWT

exports.signin = function(req, res) {
    User.findOne({
        username: req.body.username
    }, function(err, user) {
        if (err) throw err;
        if (!user || !user.comparePassword(req.body.password)) {
            return res.status(401).json({ message: 'Authentication failed. Invalid user or password.' });
        }
        return res.json({ token: jwt.sign({ email: user.email, username: user.username, _id: user._id }, 'RESTFULAPIs') });
    });
};

app.use(function(req, res, next) {
  if (req.headers && req.headers.authorization && req.headers.authorization.split(' ')[0] === 'JWT') {
    jsonwebtoken.verify(req.headers.authorization.split(' ')[1], 'RESTFULAPIs', function(err, decode) {
      if (err) req.user = undefined;
      req.user = decode;
      next();
    });
  } else {
    req.user = undefined;
    next();
  }
});

Мне также нужно установить время истечения.

Как я могу это сделать?

1 Ответ

0 голосов
/ 14 ноября 2018

Ссылка: NodeJs - получить информацию пользователя из токена JWT?

exports.me = function(req,res){
    if (req.headers && req.headers.authorization) {
        var authorization = headers.authorization,
            decoded;
        try {
            decoded = jwt.verify(authorization, secret.secretToken);
        } catch (e) {
            return res.status(401).send('unauthorized');
        }
        var userId = decoded.id;
        // Fetch the user by id 
        User.findOne({_id: userId}).then(function(user){
            // Do something with the user
            return res.send(200);
        });
    }
    return res.send(500);
}

Ссылка: для истечения срока действия токена / его продления JWT (JSON Web Token) автоматическое продление срока действия Веб-приложения Хорошим примером является обновление токена до истечения срока его действия.

Установите срок действия токена на одну неделю и обновляйте токен каждый раз, когда пользователь открывает веб-приложение, и каждый час. Если пользователь не открывает приложение более недели, ему придется снова войти в систему, и это приемлемый веб-приложение UX.

Для обновления токена вашему API требуется новая конечная точка, которая получает действительный, не просроченный JWT и возвращает тот же подписанный JWT с новым полем срока действия. Тогда веб-приложение будет хранить токен где-то

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