Dart - 尝试使用mongodb进行身份验证时出错

时间:2015-09-27 20:59:34

标签: mongodb authentication dart

跑完后:

import 'package:mongo_dart/mongo_dart.dart';

//Create account with given credentials
createAccount(Map<String, String> credentials) async {

    Db db = new Db('mongodb://127.0.0.1/exampledb');
    await db.open();
    await db.authenticate("user", "password");

    //TODO: Post credentials into DB
}

我在Dart服务器上收到错误消息:

  

未处理的异常:   未捕获的错误:{ok:0.0,errmsg:auth failed,code:18}

mongod服务器上出现了另一个错误:

  

2015-09-27T20:04:25.921 + 0100 I ACCESS [conn1]无法使用机制MONGODB-CR对用户@ exampledb进行身份验证:AuthenticationFailed MONGODB-CR凭据   用户文档中缺少ls

当我使用命令提示符时,验证成功并允许我访问数据库的唯一时间。

示例:

$ use exampledb
$ db.auth("user", "password")

如何使用身份验证方法让我的Dart脚本获得对本地mongodb的访问权限?

2 个答案:

答案 0 :(得分:3)

新鲜更新:

从版本0.2.5开始,mongo_dart支持SCRAM-SHA-1身份验证机制。它默认用于连接MongoDb 3

更新

这似乎是一些相当普遍的问题,一些驱动程序,程序e.t.c不支持mongodb 3.0的新身份验证机制(SCRAM-SHA-1

默认情况下,mongodb 3.0在创建新用户时不要以旧格式(MONGODB-CR)创建凭据。

有圆形解决方案,强制mongodb 3.0和高级版本在创建用户时使用MONGODB-CR模式。 在https://jira.mongodb.org/browse/SERVER-17459寻找示例解决方案 如该线程中所述

  

新驱动程序和旧版软件都可以使用该解决方案

显然,mongo_dart的最佳解决方案是向驱动程序添加新身份验证模式的实现。不能给出任何约会,但我认为应该是第一个功能,一旦我有时间为mongo_dart,我就可以考虑。

显然,如果有人用拉动请求打败我,那将会很棒。)

原始答案

我也在我的环境中重现了这个错误。

错误似乎与MongoDb 3.0版中更改的默认身份验证模式有关。当问题得到解决时,我会更新这个答案

答案 1 :(得分:0)

我尝试在mongodb 4.0.10和mongo_dart 0.3.6中进行身份验证,并且身份验证一切正常,如果尚未更新,请更新组件,一切都会好起来的。

PS:我知道我来晚了,但希望有人能从我的“笔记”中适应。