gpt4 book ai didi

express - 继续在序列化和反序列化我的 PassportJS 用户时遇到问题

转载 作者:行者123 更新时间:2023-12-03 22:24:13 25 4
gpt4 key购买 nike

我将 sequelize.js 用于我的数据存储,并将 github 策略与 passport.js 一起使用。我的代码是:

app.use(passport.initialize());

app.use(passport.session());

passport.use(new GitHubStrategy({
clientID: '123',
clientSecret: '456',
callbackURL: "" + config.hostname + ":" + config.port + "/auth/github/callback"
}, function(accessToken, refreshToken, profile, done) {
var authProviderQuery, newUser;
console.log('accessToken');
console.log(accessToken);
authProviderQuery = {
authId: profile.id
};
newUser = {
name: profile.username,
email: profile.emails[0].value
};
return DB.AuthProvider.find(authProviderQuery).complete(function(err, dbAuthProvider) {
var prop, _results;
if (err) {
return done(err);
}
if (!dbAuthProvider) {
return DB.User.create(newUser).complete(function(err, dbUser) {
var newAuthProvider;
if (err) {
return done(err);
}
newAuthProvider = {
name: 'github',
oathToken: accessToken,
authId: profile.id,
rawJSON: profile._raw
};
return dbUser.createAuthProvider(newAuthProvider).complete(function(err) {
if (err) {
return done(err);
}
return done(null, dbUser);
});
});
} else {
console.log(dbAuthProvider);
_results = [];
for (prop in dbAuthProvider) {
_results.push(console.log(prop));
}
return _results;
}
});
}));

passport.serializeUser = function(user, done) {
return done(null, user.id);
};

passport.deserializeUser = function(obj, done) {
return DB.User.find({
where: {
id: obj.id
}
}).complete(function(err, dbUser) {
console.log(dbUser);
return done(err, dbUser);
});
};

app.get('/auth/github', passport.authenticate('github'));

app.get("/auth/github/callback", passport.authenticate('github', {
failureRedirect: "/login"
}), function(req, res) {
return console.log('authenticated');
});

当我转到 /auth/github 时,出现以下错误:
/Users/mysite/node_modules/mysql/lib/protocol/Parser.js:82
throw err;
^
TypeError: object is not a function

我究竟做错了什么?

最佳答案

您正在替换 Passport 中的 serializeUserdeserializeUser 方法,而不是调用它们来分配(反)序列化程序 - 即。你有

passport.deserializeUser = function(obj, done) {
...
};

当你应该有
passport.deserializeUser(function(obj, done) {
...
});

查看文档: http://passportjs.org/guide/configure/

关于express - 继续在序列化和反序列化我的 PassportJS 用户时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25506688/

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