Да, это новое поведение. Если весь пользовательский объект изменен (User.update и друзей) или просто пароль, все токены доступа пользователя недействительны.
Here's the what one of the project collaborators said regarding it:
Выход из пользователей имеет важное значение для соображений безопасности. Рассмотрим случай , когда кто-то взломает ваш адрес электронной почты, который вы использовали при регистрации с помощью приложения LoopBack. После того, как вы найдете это, вы входите в приложение, и измените адрес электронной почты на другой, который не был взломан. Без аннулирование сеанса доступа (доступа), злоумышленник останется в вашей учетной записи , и у вас не будет способа их выхода из системы.
Сказав это, я согласен, что это делает работу пользователя менее оптимальной. Я предлагаю, чтобы позволить конечному пользователю решить ли они хотят, чтобы выйти из других сессий или нет, см #3071
Прямо сейчас есть только открытый вопрос для этого (#3071) с просьбой не тянуть. Для этого нет никакого обходного пути.
Если вы действительно отчаянные, чтобы иметь решение, то вы можете обезьяна патч шлейф:
Я посмотрел на коде, и нашел this part is responsible for it, который вызывает User._invalidateAccessTokensOfUsers
. Так как я haven't found, что где-либо еще в проекте, используя эту функцию, я предполагаю, что вы можете сделать рискованный шаг, чтобы переопределить это не делать ничего:
app.models.User._invalidateAccessTokensOfUsers = (ids, cb) => process.nextTicke(cb);
Это самый лучший способ, которым я могу думать, чтобы решить эту проблему пока они не разрешат эту ошибку (#3071). Обратите внимание, что вы должны убедиться, что ваш код и ваши зависимости также не используют _invalidateAccessTokensOfUsers
, а также loopback не начинает использовать его в других местах. Прокомментируйте это и не забудьте удалить его и быть очень осторожным.
Очень благодарен за ваш комментарий и фактически указал на код, ответственный за проблему, потрясающий человек. –
Обратите внимание, что новая версия LoopBack ([2.37.1] (https://github.com/strongloop/loopback/releases/tag/v2.37.1)/[3.2.1] (https://github.com/ strongloop/loopback/релизы/tag/v3.2.1)) сохраняет текущий сеанс при недействительности токенов. Этого, вероятно, достаточно, чтобы решить проблему OP самостоятельно. –