首页 > 解决方案 > 错误:调用 passport.serializeUser 时无法读取 null 的属性“用户”

问题描述

所以我的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返回错误的函数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;

标签: node.jspassport.js

解决方案


根据您编写的代码done(null. user.id);,它应该是done(null, user.id);

您已经使用.而不是,


推荐阅读