Error: Cannot read property 'user' of null when calling passport.serializeUser
Error: Cannot read property 'user' of null when calling passport.serializeUser
所以我的 passport.js 文件中有下一个:
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
var connection = require('./database');
const User = require('./models/user');
const verifyCallback = (username, password, done) => {
User.findUser(username).then((user) => {
if(!user)
return done(null, false);
const isValid = User.validPassword(password, user[0].password).then((isValid)=>{
if(isValid)
return done(null, user);
else
return done(null, false);
})
})
.catch((err) =>{
done(err);
});
};
const strategy = new LocalStrategy(verifyCallback);
passport.use(strategy);
passport.serializeUser((user, done) => {
console.log(user + "\n" + user.id);
done(null. user.id);
});
passport.deserializeUser((userId, done) => {
User.findById(userId)
.then((user) =>{
done(null, user)
})
.catch(err => done(err));
})
一切正常,直到 passport.serializeUser
函数 return 错误 Cannot read property 'user' of null
我不知道 user
参数来自哪里,我正在学习教程,但那个人没有解释。我应该如何解决该错误?
这是路线:
var express = require('express');
var router = express.Router();
var passport = require('passport');
const controller = require('../controllers/LoginController');
router.get('/', controller.getLoginPage);
router.post('/', passport.authenticate('local', {failureRedirect: '/', successRedirect: '/register'}),controller.login);
module.exports = router;
按照你写的代码done(null. user.id);
,应该是done(null, user.id);
您使用了 .
而不是 ,
所以我的 passport.js 文件中有下一个:
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
var connection = require('./database');
const User = require('./models/user');
const verifyCallback = (username, password, done) => {
User.findUser(username).then((user) => {
if(!user)
return done(null, false);
const isValid = User.validPassword(password, user[0].password).then((isValid)=>{
if(isValid)
return done(null, user);
else
return done(null, false);
})
})
.catch((err) =>{
done(err);
});
};
const strategy = new LocalStrategy(verifyCallback);
passport.use(strategy);
passport.serializeUser((user, done) => {
console.log(user + "\n" + user.id);
done(null. user.id);
});
passport.deserializeUser((userId, done) => {
User.findById(userId)
.then((user) =>{
done(null, user)
})
.catch(err => done(err));
})
一切正常,直到 passport.serializeUser
函数 return 错误 Cannot read property 'user' of null
我不知道 user
参数来自哪里,我正在学习教程,但那个人没有解释。我应该如何解决该错误?
这是路线:
var express = require('express');
var router = express.Router();
var passport = require('passport');
const controller = require('../controllers/LoginController');
router.get('/', controller.getLoginPage);
router.post('/', passport.authenticate('local', {failureRedirect: '/', successRedirect: '/register'}),controller.login);
module.exports = router;
按照你写的代码done(null. user.id);
,应该是done(null, user.id);
您使用了 .
而不是 ,