node.js - 错误:调用 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;
解决方案
根据您编写的代码done(null. user.id);
,它应该是done(null, user.id);
您已经使用.
而不是,
推荐阅读
- javascript - Material Design Lite - JS 不应用事件监听器
- javascript - 登录后反应重定向不起作用
- docker - 部署后,一个 Rancher 负载均衡的 RESTful 应用实例返回 404,而其他返回结果
- php - 使用 PHP 和 MySQL 更新记录中的 BLOB
- lucene - Azure 搜索中的模糊搜索和邻近搜索
- html - 我希望我的表连接在顶部(css / html)
- javascript - 在ajax中回击两次成功
- python - 将 .gif 文件从 4d numpy 数组生成到内存流中
- java - 获取锁屏壁纸安卓
- javascript - 画布在 React.js 中无法正确缩放