簡體   English   中英

MongoServerError:命令 createIndexes 需要身份驗證

[英]MongoServerError: command createIndexes requires authentication

我無法讓我當前的 NodeJS 項目連接到我的 MongoDB 數據庫,該數據庫在 conf 文件中啟用了安全授權。

我正在使用 Mongoose.js 連接到數據庫。 閱讀文檔后,我似乎無法弄清楚我錯過了什么。

錯誤:MongoServerError:命令 createIndexes 需要身份驗證

我提前感謝您的幫助:)

下面是我的實現:

我創建了一個對項目數據庫具有讀/寫角色的 db 用戶。

{
    _id: 'admin.dbUser',
    userId: UUID("1dfdd059-dc4e-48c8-82af-3b9d3b6106fc"),
    user: 'dbUser',
    db: 'admin',
    credentials: {
      'SCRAM-SHA-1': {
        iterationCount: 10000,
        salt: 'blah',
        storedKey: 'blah',
        serverKey: 'blah'
      },
      'SCRAM-SHA-256': {
        iterationCount: 15000,
        salt: 'blah',
        storedKey:'blah' ,
        serverKey: 'blah'
      }
    },
    roles: [
      { role: 'readWrite', db: 'projectDbLocal' },
      { role: 'read', db: 'projectDbLocal' }
    ]
  },

在我的 app.js 文件中,我有以下代碼:

我還確保我的 app.js 能夠解析存儲 mongo 憑據的環境變量。

//Set MongoDB options
const db_options = {
  authSource: 'admin',
  auth: {
    username: process.env.MONGODBUSER,
    password: process.env.MONGODBPASS,
  },
  useNewURLParser: true,
  useUnifiedTopology: true,
};

//Connect to MongoDB
mongoose.connect(process.env.MONGODBURL, db_options);

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', () => {
  console.log('Database Connected');
});

我設法弄清楚這里發生了什么。

我正在使用 MongoStore 來管理會話。 正在創建的商店沒有經過身份驗證,這就是我遇到問題的原因。

得到這個工作的結果代碼是:

const sessionConfig = {
  secret: 'secret',
  resave: false,
  saveUninitialized: true,
  store: MongoStore.create({
    mongoUrl: `mongodb://${mongodbUser}:${mongodbPass}@${process.env.MONGODBURL}/db`,
  }),
  cookie: {
    httpOnly: true,
    //secure: true,
    expires: Date.now() + 1000 * 60 * 60 * 24 * 7, //one week
    maxAge: 180 * 60 * 1000,
  },
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM