[英]MongoDB custom user roles - "user is not allowed(...)"
我在 MongoDB Atlas 上創建了一個免費層集群(它有 3 個分片),我希望我的 Node.js 應用程序連接到我在那里創建的數據庫,使用特定用戶,該用戶將被限制使用除指定數據庫之外的任何其他數據庫對於這個應用程序。
就這樣一步步來。
我創建了一個名為test
的數據庫。
我在這里創建一個角色 - 我去Security -> MongoDB Roles -> Add New Custom Role
,我給它所有的Collection actions
和所有的Database actions and roles
來test
用戶的時間,所以再次Security -> MongoDB Users -> Add New User
,我為其分配一個先前創建的角色,因此它只能訪問test
數據庫。 所以現在我有 2 個用戶 - atlasAdmin 和我創建的用戶。
這就是問題所在,當我在我的應用程序中使用管理員用戶進行連接時, .find()
或.create()
它始終可以正常工作。 對於具有自定義角色的用戶,它的工作時間約為 10 分鍾/1 個連接(直到我關閉了我的節點應用程序所在的本地服務器),下次我收到錯誤消息“不允許用戶執行操作(.. .)”。
我嘗試了一切,修改我用來連接的字符串,更新mongoose
(我在我的應用程序中使用它),使用 mongodb shell 創建用戶和自定義角色,但似乎沒有任何效果。
然而:
如果我有這個自定義用戶,我的應用程序將它連接到數據庫並且它可以工作,然后在下一個連接上它停止工作我去這里點擊UPDATE USER
而不改變那里的任何東西(我只點擊用戶旁邊的edit
和然后update
) 然后等待集群進行更改,它將再次為類似 +/- 一個連接工作。
如果我的應用程序使用管理員帳戶,一切正常
任何人有類似的問題? 錯誤的屏幕截圖我也在想這可能是因為我嘗試從應用程序連接 mongo 的次數(我使用nodemon
所以每次我保存一個有更改的文件時,服務器重新啟動,從而再次連接到數據庫)但是我認為情況並非如此 - 如果是這樣,為什么我能夠讓它與管理員用戶一起使用?
我用來連接mongo的字符串:
// DATABASE SETUP
var dbURL = 'mongodb://[cluster0:port],[cluster1:port],[cluster2:port]/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true';
var options = {
useNewUrlParser: true,
dbName: "test"
user: [login],
pass: [pass]
};
mongoose.connect(dbURL, options);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.