Node.js Nodejs-Passport-无法将用户序列化到会话中
我正在使用以下库: 我想做的是:Node.js Nodejs-Passport-无法将用户序列化到会话中,node.js,passport.js,Node.js,Passport.js,我正在使用以下库: 我想做的是: 对API进行身份验证(用户名/密码) 获取访问令牌 从API获取用户配置文件 使用passport登录用户 我正在使用以下实现: PasswordGrantStrategy.prototype.userProfile = function(accessToken, done) { return done(null, { real_name: 'Foo Baz', email: 'test@test.com' }); } passport.use(ne
PasswordGrantStrategy.prototype.userProfile = function(accessToken, done) {
return done(null, { real_name: 'Foo Baz', email: 'test@test.com' });
}
passport.use(new PasswordGrantStrategy({
tokenURL: 'http://api.local/oauth/token',
clientID: "2",
clientSecret: "",
grantType: "password",
},
function(accessToken, refreshToken, profile, done) {
return done(null, profile);
}));
function authenticate() {
return function(req, res, next) {
var username = "email@email.com";
var password = "password";
passport.authenticate('password-grant', {
username: username,
password: password
})(req, res, next);
};
}
使用用户名/密码登录到API
它正在将配置文件传递到passport的回调函数中。使用(new PasswordGrantStrategy
但是,我收到以下错误:
无法将用户序列化到会话中
当我传递一个配置文件时,它应该是序列化的,看起来一切正常。现在这是否意味着会话可能有问题?您需要向Passport提供serializeUser和deserializeUser方法,以便它工作 从官方文件:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
虽然从未调用过
反序列化用户
,但只调用了序列化用户
。您在会话存储中使用了什么?我在app.js
中只有以下内容:app.use(passport.session())
哪个存储会话?!?我想这就是我出错的地方,但似乎无法确定如何处理会话会话会话需要存储在某个位置,以便express可以将后续请求与序列化用户进行比较。请查看类似的内容-实现起来非常简单我在m的后端有postgresy项目,因此我将上面的包与另一个写入postgres的包一起使用: