gpt4 book ai didi

javascript - 有人用过 Mongoose-auth 吗?你如何覆盖 findOrCreate 用户?

转载 作者:可可西里 更新时间:2023-11-01 10:07:49 26 4
gpt4 key购买 nike

现在我正在使用 mongoose-auth 的 Facebook Connect。一切正常,用户正在通过我的 mongodb 服务器创建/登录。

但是,我想覆盖 findOrCreateUsers,因为我想在注册时为每个新用户分配一个随机“代码”,并将其放入他们的 db.users 配置文件中。

所以我查看了 mongoose-auth/lib/facebook,并将这 3 个 facebook 模块文件复制到我自己的目录 [everyauth.js、index.js、schema.js] 中。为了运行一个简单的测试,我基本上从我的目录中包含了我自己的 everyauth.js,并使用它的 findOrCreateUsers 方法而不是默认方法。

有效,但有一个错误。登录/创建用户后,req.user 未定义。 (req.loggedIn 显示 True,耶!)

我知道这是一个新的库,但如果您使用过它(或者对 Node.js 了解很多),如果您能帮助我,我将不胜感激。我在 irc.freenode.net 上的#node.js。昵称是“xeodox”。如果您能帮助我,我将不胜感激!!

我通过对我的 app.js 中的 facebook 模块执行此操作来覆盖 findOrCreateUser:

 findOrCreateUser: function (sess, accessTok, accessTokExtra, fbUser) {
var promise = new Promise()
, self = this;
// TODO Check user in session or request helper first
// e.g., req.user or sess.auth.userId
this.User()().findOne({'fb.id': fbUser.id}, function (err, foundUser) {
if (foundUser)
return promise.fulfill(foundUser);
self.User()().createWithFB(fbUser, accessTok, accessTokExtra.expires, function (err, createdUser) {
return promise.fulfill(createdUser);
});
});
return promise;
}

最佳答案

无需将这些文件复制到您自己的目录中。只需在您的 mongoose-auth 配置中执行以下操作:

facebook: {
everyauth: {
myHostname: 'http://localhost:3000'
, appId: 'YOUR APP ID HERE'
, appSecret: 'YOUR APP SECRET HERE'
, redirectPath: '/home'
, findOrCreateUser: function (session, accessToken, fbUserMetadata) {
}
}
}

有关未定义的 req.user 的帮助,请提交 issue在 github 上有一个独立的链接 gist重新创建问题,我可以帮助您。

关于javascript - 有人用过 Mongoose-auth 吗?你如何覆盖 findOrCreate 用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5813016/

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