Я использую node.js
для создания небольшой игры и хранения состояний / токенов. Я использую онлайн-базу данных mongolab
.Я генерирую токен со следующей функцией:
UserSchema.methods.generateAuthToken = function() {
var user = this;
var access = "auth";
var token = jwt.sign({_id: user._id.toHexString, access}, "abc123").toString();
user.tokens = user.tokens.concat({access, token});
return user.save().then(() => {
return token;
});
};
Функция save
:
UserSchema.pre("save", function(next) {
var user = this;
console.log("Being saved");
if (user.isModified("password")) {
console.log("Being modified");
bcrypt.genSalt(5, (err, saltvalue) => {
bcrypt.hash(user.password, saltvalue, (err, hash) => {
user.password = hash;
next();
});
});
} else {
next();
}
});
Если я останусь на определенной странице дляsometime(delay)
затем база данных сбрасывает токен в пустой массив.
Однако я вставил повсюду console.logs
, чтобы увидеть, пытается ли сервер сбросить значение, но база данных делает это автоматически.Если кто-то знает об этой ошибке, это очень поможет.