У меня есть узловое приложение, использующее токен json web:Где лексен json web сохраняет данные?
var jwt = require ('jsonwebtoken');
Если вход в систему succedes, то эта библиотека создает маркер таким образом:
var payload = {mydata: 'abcd'};
var token = jwt.sign(payload, 'secret', {
expiresIn: 28800
});
return {
success: true,
message: 'Success',
token: token
};
То, что я не понимаю, где маркер хранится на сервере. Если же пользователь, который получил маркер делает вызов к защищенному ресурсу, то у меня есть эта строка:
jwt.verify(token_sent_by_used, 'secret', function (err, res) {
if(!err){
res.json({result: 'success'});
}
else{
res.json({result: 'failure'});
}
}
Причина Im спрашивая это, что я не мог найти объяснение о том, как обращаться с JWT при запуске приложение на нескольких машинах. Если мой бэкенд помещается на разные машины, и пользователь делает запросы к балансировщику нагрузки, тогда запрос может попасть на любую машину. Если jwt записывает данные о токенах в файловой системе, то, я думаю, может возникнуть проблема, если запрос попадает на машину, которая не была той, которая создала токен. При использовании сеанса вы можете установить обработчик сеанса в базу данных. Как вы решаете это с помощью jwt?
**** EDIT ****
Хорошо, давайте возьмем eaxmple. У меня есть приложение-узел, которое работает на компьютере .10, и одно и то же приложение узла также работает на компьютере .11. Две разные машины.
Я иду на машину .10 и отправляю имя пользователя. Приложение на машине .10 проверяет имя пользователя/пароль. Они в порядке. Машина .10 создает токен jwt и отправляет его мне.
Теперь я делаю запрос на завихрение (ресурсу, который требует действительного jwt-token), на машину .11 и отправляет jwt-токен, который был отправлен мне. Машина .11 не будет жаловаться на jtw-токен? Это будет считаться действительным? Даже если он не был создан на машине .11?
Значок Jwt не хранится на сервере. После создания сервера маркеров jwt отправьте этот токен пользователю/браузеру. Затем вы можете сохранить этот токен либо в состоянии приложения, либо в локальном хранилище браузера, либо в хранилище сеансов браузера. –
Пожалуйста, взгляните на отредактированный вопрос. – oderfla
Значок Jwt не имеет ничего общего с машиной. Вам просто нужен один и тот же секретный ключ на обеих машинах для дешифрования/шифрования токена. –