Mongo使用护照身份验证创建用户错误

Posted

技术标签:

【中文标题】Mongo使用护照身份验证创建用户错误【英文标题】:Mongo create user error using passport authentication 【发布时间】:2015-09-13 18:17:57 【问题描述】:

我正在使用 MEAN.IO 堆栈(Mongoose 的默认模板)和 Passport.js 身份验证来创建新用户。每当在下面的代码中调用 user.save(...) 时:

// Use Facebook strategy
passport.use(new FacebookStrategy(
    clientID: config.strategies.facebook.clientID,
    clientSecret: config.strategies.facebook.clientSecret,
    callbackURL: config.strategies.facebook.callbackURL
  ,
  function(accessToken, refreshToken, profile, done) 
    User.findOne(
      'facebook.id': profile.id
    , function(err, user) 
      if (user) 
        return done(err, user);
      
      user = new User(
        name: profile.displayName,
        email: profile.emails[0].value,
        provider: 'facebook',
        facebook: profile._json,
        roles: ['authenticated']
      );
      user.save(function(err) 
        if (err) 
          console.log(err);
          return done(null, false, message: 'facebook login failed, email already used by other login strategy');
         else 
          return done(err, user);
        
      );
    );
  
));

控制台记录以下错误:

MongoError: attempt to use unsupported textIndexVersion 2, only textIndexVersion 1 supported

我在网上查看了 MEAN.IO 堆栈代码,但找不到任何有关如何更改 textIndexVersion 的信息。

任何想法如何更改版本或修复此错误?

【问题讨论】:

【参考方案1】:

根据 Mongo 的错误报告:

mongod v2.4.9 将正确禁止更改具有 与 2.4 不兼容的文本索引。尝试插入、更新、 或删除这些集合中的文档将返回错误消息 “尝试使用不受支持的 textIndexVersion 2,仅 textIndexVersion 1 个支持”。

https://jira.mongodb.org/browse/SERVER-11494

我建议更新您的 Mongo 版本以与 v2.4.9 兼容

【讨论】:

当前的mongo版本是2.4.9

以上是关于Mongo使用护照身份验证创建用户错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 护照刷新令牌

Laravel 护照出现 401 Unauthenticated 错误

我可以使用 html5 本地存储来存储用户身份验证会话信息吗

身份验证用户提供程序 [passport] 未使用 laravel 护照定义

用户未经授权时的 Laravel 护照自定义错误消息和状态码

快速护照检查用户是不是已通过身份验证