0
我目前正在嘗試向我的節點API添加一些身份驗證。使用await時未定義對象
現在我正在使用PassportJS(對於這個非常新,所以對不起我的不稱職者)。
我試圖添加本地策略,並檢查用戶的密碼是合法時,在洛:Error: ReferenceError: user is not defined
:
// Local Strategy
passport.use(
new LocalStrategy(async (username, password, done) => {
try {
// Find user by username
const user = await User.findOne({ username })
// No user found
if (!user) {
return done(null, false)
}
console.log('user', user) // Getting output
// Check if password correct
const isMatch = await user.isValidPassword(password)
// Handle if password is not correct
if (!isMatch) {
return done(null, false)
}
// Return user
done(null, user)
} catch (err) {
done(err, false)
}
})
)
東西我已經注意到使用await
上const isMatch = await user.isValidPassword(password)
當郵遞員說的是。當我刪除await
它工作正常,但我可以鍵入錯誤的密碼,但我仍然可以登錄。我可以在console.log中看到我的user
對象。
{
"username": "martinnord3",
"password": "this_is_the_wrong_password"
}
這裏的isValidPassword
功能:
UserSchema.methods.isValidPassword = async function(newPassword) {
try {
return await bcrypt.compare(newPassword, user.password)
} catch (err) {
throw new Error(err)
}
}
我想有一些明顯的我失蹤,但我不能設法解決這個問題。
感謝您花時間閱讀本文!
'user.isValidPassword(password)'返回什麼?儘量不要等待。 – Firanolfind
@Firanolfind您好!你的回報是什麼意思? :o –