gpt4 book ai didi

node.js - Nodejs - Passport - 无法将用户序列化到 session 中

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:28 25 4
gpt4 key购买 nike

我正在使用以下库:

passport-oauth2-password-grant

我想做的是:

  1. 向 API 进行身份验证(用户名/密码)
  2. 获取访问 token
  3. 从 API 获取用户个人资料
  4. 使用 Passport 登录用户

我正在使用以下实现:

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.use(new PasswordGrantStrategy 的回调函数中但是,我收到以下错误:

Failed to serialize user into session

当我传递一个配置文件时,它应该被序列化,并且一切看起来都很好。现在这是否意味着 session 可能存在问题?

最佳答案

您需要向 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);
});
});

关于node.js - Nodejs - Passport - 无法将用户序列化到 session 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42436637/

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