java - 如何使用 Java 将 MongoDB 中的数据保存到字符串中?

标签 java mongodb authentication

我在 Mongo DB 的数据库中有一个这样的文档。

{
    "_id" : ObjectId("5800d904a3e7535f0d2d673a"),
    "username" : "sai",
    "password" : "sai123"
}
{
    "_id" : ObjectId("5800d921a3e7535f0d2d673b"),
    "username" : "surya",
    "password" : "surya123"
}

现在我有一个包含用户名和密码的 html。

如何单独保存用户名和密码并将它们存储到 MongoDB 数据库中的单独字符串中?

当我尝试使用“用户名 SAI”作为键从数据库中使用如下 Java 代码查询数据时:

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import java.util.Arrays;

public class MongoDBJDBC {

    public static void main(String args[]){

        try{
            MongoClient client=new MongoClient("localhost", 27017);

            DB db= client.getDB("test");
            System.out.println("Connect to database successfully");

            DBCollection coll= db.getCollection("login");
            System.out.println("Collection POST selected successfully");

            String uname="username";
            String s="sai";


            DBCursor cursor= coll.find(new BasicDBObject(uname, s),new BasicDBObject("_id", 0));
            int i=1;

            while(cursor.hasNext()){

                System.out.println("Inserted doc  :" +i);

                DBObject xyz= cursor.next();
                System.out.println(xyz);

                i++;

            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

}

我得到这个输出:

Connect to database successfully
Collection POST selected successfully
Inserted doc  :1
{ "username" : "sai" , "password" : "sai123"}

如何操纵这些操作将用户名和密码存储到临时本地字符串中? 请给我建议。

更新: 我已经把完整的代码贴出来了。请帮我。我也是新来的。

最佳答案

要实现这种机制,您需要:

  1. 创建一个由 2 个字段组成的索引 coll.ensureIndex(new BasicDBObject("username", 1).append("password", 1)) ,它可以在执行查询时获得最佳性能。
  2. 获取与所提供的用户名和密码匹配的第一个文档,如果可以找到文档,则用户名/密码正确,否则不正确。

代码可能是:

BasicDBObject query = new BasicDBObject("username", uname).append("password", s);
// Gets only the id of a doc that matches with the username and password
DBObject item = coll.findOne(query, new BasicDBObject("_id", Boolean.TRUE));
// If != null ok, ko otherwise
if (item == null) {
    // KO
} else {
    // OK
}

所需的导入:

import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCollection;

注意:出于安全原因,将这样的密码直接存储在数据库中并不是一个好方法,它们应该被标记和散列

关于java - 如何使用 Java 将 MongoDB 中的数据保存到字符串中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40049137/

相关文章:

node.js - 在 Nodejs 中找不到模块

android - 在 PhoneGap 应用程序上对我的 node.js 服务器执行授权(通过 facebook)REST 请求

c# - WebAPI 使用用户名和密码对 Azure AD 进行非交互式身份验证

java - 试图从 eclipse 启动 tomcat,但找不到 index.jsp

java - 使用流将 List<Object> 收集到 Java 8 中的 Map<String, List<Object>>

javascript - 为什么 mongoose 中间件 "pre"用 { query : true } is not called? 删除

javascript - Mongoose - 如何处理空结果

ios - 此假通知应转发到 firebase Swift5 iOS

java - 为java创建WebSphere管理客户端程序

java - 为什么位或操作会导致符号扩展而位却不会?