Auth0 自定义数据库 mongodb,注册脚本返回 SandboxTimeoutError

Posted

技术标签:

【中文标题】Auth0 自定义数据库 mongodb,注册脚本返回 SandboxTimeoutError【英文标题】:Auth0 custom database mongodb, signup script is returning SandboxTimeoutError 【发布时间】:2017-03-19 21:22:41 【问题描述】:

我正在尝试使用在mlab 和auth0 中创建的我自己的mongo 数据库进行用户管理。这是他们提供的模板。

function create (user, callback) 
  mongo('mongodb://user:pass@mymongoserver.com/my-db', function (db) 
    var users = db.collection('users');

    users.findOne( email: user.email , function (err, withSameMail) 

      if (err) return callback(err);
      if (withSameMail) return callback(new Error('the user already exists'));

      bcrypt.hashSync(user.password, 10, function (err, hash) 
        if (err)  return callback(err); 
        user.password = hash;
        users.insert(user, function (err, inserted) 
          if (err) return callback(err);
          callback(null);
        );
      );
    );
  );

更改连接 URI 后,我尝试通过在脚本中提供电子邮件和密码来“创建”用户。我看到以下错误:

[SandboxTimeoutError] Script execution did not complete within 20 seconds. Are you calling the callback function?

我遵循了他们提供的调试脚本。这是日志:

$ wt logs -p "myservice-eu-logs"
[12:35:27.137Z]  INFO wt: connected to streaming logs (container=myservice)
[12:35:29.993Z]  INFO wt: new webtask request 1478435731301.992259
[12:35:30.047Z]  INFO wt:  [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' 
[12:35:30.047Z]  INFO wt: js-bson: Failed to load c++ bson extension, using pure JS version
[12:36:05.080Z]  INFO wt: finished webtask request 1478435731301.992259 with HTTP 500 in 35096ms

有什么建议吗?

【问题讨论】:

看起来您缺少一些外部文件/模块? 针对 Node.js 的 here 发布了类似的问题。但是,我不知道在哪里可以访问 Auth0 中的 bson 变量。 【参考方案1】:

其实bcrypt.hashSync是同步方法,所以回调函数永远不会被调用,脚本会超时。

任意使用:

var hashedPwd = bcrypt.hashSync(user.password);

bcrypt.hash(user.password,10,function(....);

【讨论】:

太棒了。我用bcrypt.hash 替换了bcrypt.hashSync 电话,这解决了这个问题。非常感谢。

以上是关于Auth0 自定义数据库 mongodb,注册脚本返回 SandboxTimeoutError的主要内容,如果未能解决你的问题,请参考以下文章

Auth0 端点 API 的自定义实现?

集成 Auth0 自定义数据库和无密码

带有自定义登录页面的 Auth0 授权代码流

Auth0 中自定义 API 的优势是啥?

配置 Auth0 工作流的问题

通过自定义授权方方法使用 Auth0 授权 AWS APIGateway