Вы должны прикреплять подписанный токен в каждом HTTP-требовании от клиента, либо с помощью пользовательского HTTP-заголовка, либо в cookie
.Этот токен отправляется только после успешного входа в систему, который содержит идентификатор пользователя и другую информацию.
После того, как вы начнете получать этот токен, вы можете проверить его (проверка на срок действия или некоторые изменения вручную) с помощью промежуточного программного обеспечения, и эти данные токена будутфактические данные пользователя принадлежат пользователю, вошедшему в систему.
Теперь вы читаете этот заголовок / файл cookie, чтобы получить информацию о запрашивающем пользователе, и затем можете отправлять только его соответствующие данные.
Скажем, если клиентотправка информации о вашем токене в заголовке tkn
.Ваша проверка токена может быть следующей:
var jwt = require('jsonwebtoken');
const SECRET = 'whatulike';
function verifyToken(req, res, next) {
var token = req.headers.tkn || "";
if (!token.length)
return unauthorised(res, 'Token absent');
jwt.verify(token, SECRET, function(err, decoded) {
if (err)
return unauthorised(res, 'Failed to authenticate token.');
req.tkn = decoded.id;
next();
});
}
function unauthorised(res, msg){
const sc = 401;
logger.warn(`${sc} - Unauthorised request ${res.req.originalUrl}`);
res.status(sc).send({msg});
}
module.exports.verifyToken = verifyToken;
А на стороне обработчика вы можете прочитать tkn
данные типа:
module.exports.getProfile = async function(req, res) {
try {
const user = await User.findOne({id: req.tkn.userId})
res.status(200).json(user)
} catch(e) {
errorHandler(res, e)
}
}