2016-12-08 4 views
0

У меня есть node js программы, которая использует mongodb, как его DBS, который выглядит примерно так:MongoDB приложение аутентификации - db.auth()

show dbs 
    test 
    eas 
use eas 
show collections 
    nodeurls 
    nodes 
    users 

На данном этапе, каждый может получить доступ Монго оболочки и посмотреть на все коллекции и данные в них. Однако я хочу добавить аутентификацию, чтобы кто-то сначала должен был аутентифицироваться против оболочки mongo, а затем сможет просматривать данные mongo db.

Я нашел это: https://docs.mongodb.com/manual/core/authentication/

И попытался использовать метод db.auth() однако я не понимаю, как это работает в полной мере.

Предполагаю, что мне сначала нужно создать пользователя (мне нужен только один пользователь для оболочки db mongo), а затем пользователю нужно пройти аутентификацию?

Любая помощь по этому поводу будет оценена!

ответ

0

Для этой точки

Однако я хочу добавить в аутентификации, так что кто-то первый должен выполнить проверку подлинности на Монго оболочки, а затем будет иметь возможность просматривать данные Монго дб.

В соответствии с документом here Я создал аутентификацию имени пользователя и пароля следующим образом.

Создал пользователя таким образом в admin db.

db.CreateUser({ 
    "user" : "sfk", 
    "db" : "admin", 
    "roles" : [ 
      { 
        "role" : "root", 
        "db" : "admin" 
      }] 
}) 

В связи с этим аутентификация применяется ко всем базам данных. Так что показать dbs, показать коллекции в любой базе данных будет работать.

Способ подключения оболочки,

Start mongod с параметром AUTH

C: \ MongoDB \ Server \ 3.2 \ Bin \ mongod.exe --auth --port 27017

Затем откройте монго оболочки с аутентификацией

C: \ MongoDB \ Server \ 3.2 \ Bin \ mongo.exe --port 27017 -u «СФК» -p «СФК» --authenticationDatabase «админ»

где и - имя пользователя, р - пароль

Теперь мы можем выдавать любые команды на любой базе данных.

Мы также можем аутентифицировать пользователей для конкретных баз данных, как показано в документах.

db.createUser(
    { 
    user: "reportsUser", 
    pwd: "12345678", 
    roles: [ 
     { role: "read", db: "reporting" }, 
     { role: "read", db: "products" }, 
     { role: "read", db: "sales" }, 
     { role: "readWrite", db: "accounts" } 
    ] 
    } 
) 

Чтобы использовать db.auth

начала MONGO оболочки без аутентификации.Затем перейдите к администратору db.

use admin 
db.auth("username", "psw") 

Теперь пользователь аутентифицирован.

Пожалуйста, размещайте комментарии, если требуется дополнительная информация.

+0

Я применил вышеупомянутое и имею программу js узла, где мой dbs-url хранится в файле конфигурации: module.exports = { 'url': 'mongodb: // testuser: testing @ localhost/mydbs' }; Это работает, однако, есть способ хешировать этот пароль? – deeveeABC

+0

Взгляните на это [здесь] (https://www.npmjs.com/package/secure-conf) – shanmugharaj

+0

Если этот ответ на вопрос, пожалуйста, подумайте о принятии ответа, если вы чувствуете – shanmugharaj

Смежные вопросы