跑完后:
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的访问权限?
答案 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:我知道我来晚了,但希望有人能从我的“笔记”中适应。