Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有人用过猫鼬认证吗?如何超越findOrCreateUsers?_Javascript_Authentication_Mongodb_Node.js_Mongoose - Fatal编程技术网

Javascript 有人用过猫鼬认证吗?如何超越findOrCreateUsers?

Javascript 有人用过猫鼬认证吗?如何超越findOrCreateUsers?,javascript,authentication,mongodb,node.js,mongoose,Javascript,Authentication,Mongodb,Node.js,Mongoose,现在我正在使用mongoose auth的Facebook连接。一切正常,用户正在通过我的mongodb服务器创建/登录 然而,我想超越findOrCreateUsers,因为我想在注册时为每个新用户分配一个随机的“代码”,并将其放入他们的db.users配置文件中 因此,我查看了mongoose auth/lib/facebook,并将这3个facebook模块文件复制到我自己的目录[everyauth.js、index.js、schema.js]。为了运行一个简单的测试,我基本上从我的目录中

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

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

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

这是可行的,但有一个错误。登录/创建用户后,
req.user
未定义。(
req.loggedIn
显示为真,耶!)

我知道这是一个新的库,但是如果您使用过它(或者非常了解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
的帮助,请在github上提交一个文件,其中包含一个链接,用于重新创建问题,我可以帮助您解决