我有一个grails应用程序,其中我使用db.authenticate作为登录页面,但我知道这个方法已被弃用,因此我想升级我的应用程序以使用MongoCredential对象进行身份验证。但是,与db.authenticate不同,它很好地返回一个布尔值来完成身份验证,MongoCredential不会返回一个布尔值,所以我怎么能以最小的头痛完成代码替换。理想情况下,我想得到某种布尔值来告诉我是否实现了身份验证。谢谢你的耐心。我是Mongodb的新手。
这是我需要替换的代码的一部分,目前使用已弃用的方法“authenticate”:
MongoClient mongoClient = new MongoClient("localhost", 27017)
DB db = mongoClient.getDB("twcdb");
def userName = params.username
def passWord = params.password
//deprecated method being used in the line below.
boolean auth = db.authenticate(userName, passWord.toCharArray())
if (auth) {
userloggedin = params.username
render(contentType: 'text/json') {
[success: true, url: createLink(controller: 'admin', action: 'loggedin')]
}
}
else {
render(contentType: 'text/json') {
["success": false, "message": 'Login or Password is incorrect.']
}
编辑:我知道答案必须在于以某种方式测试MongoClient对象的属性以查看它是否包含有效的经过身份验证的连接,但我仍然坚持如何执行此操作。鉴于我故意用一个伪造的MongoCredential来提供MongoClient构造函数,它仍然会创建一个非null的对象。我打赌空测试但没有快乐。那么,如何替换已弃用的db.authenticate?