gpt4 book ai didi

node.js - 用户未定义 : Nodejs/Express + Passport

转载 作者:搜寻专家 更新时间:2023-10-31 22:45:32 24 4
gpt4 key购买 nike

我的问题与this question 非常相似但是答案似乎对我不起作用(我看到用户也从未选择答案)。

我全新安装了 Nodejs 和 Express。

我的设置:

app.use(express.static(path.join(__dirname, 'public')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser('hithere'));
app.use(session({
secret: 'hithere',
resave: false,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());


passport.serializeUser(function(user, done) {
console.log('Serialize user called.');
return done(null, user);
});

passport.deserializeUser(function(id, done) {
console.log('Deserialize user called.');
return done(null, user);
});

passport.use(new LocalStrategy(
function(username, password, done) {
console.log('local strategy called with: %s', username);
return done(null, {username:username, password:password});
}));


app.use('/', routes);
app.use('/users', users);
app.get('/success', function(req, res) {
req.send('sucess!');
});
app.get('/failure', function(req, res) {
req.send('failure!');
})
app.post('/register', function(req, res) {
console.log(req.body);
});

app.post('/signup', passport.authenticate('local', { successRedirect: '/success', failureRedirect: '/failure' }));

我正在使用 express-session .

我的 LocalStrategy、序列化和反序列化用户都被调用了,但坦率地说,我不太确定在这个测试应用程序的反序列化函数上放什么。

有任何修复建议吗?

最佳答案

你得到 user is not defined 因为 user 实际上没有在你的 deserializeUser() 回调中定义。如果您查看关于 this page 的“ session ”部分中的示例,您将看到您应该在数据库中查找 id 并将用户对象(根据数据库查询的结果生成)传递给 done 回调。

为了简单的测试目的,您可以轻松地使用一个假的用户对象,直到您设置了一个数据库:

passport.deserializeUser(function(id, done) {
console.log('Deserialize user called.');
return done(null, { firstName: 'Foo', lastName: 'Bar' });
});

关于node.js - 用户未定义 : Nodejs/Express + Passport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28143587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com