如何在烧瓶中使用MongoDB内置访问控制



我有一个烧瓶应用程序,该应用程序使用pymongo访问mongo数据库并满足用户的请求。我启用了Mongo的访问控制,现在有几个与不同角色相关联的用户。更具体地说,每个用户仅在DB中的特定集合中都有读写特权。

我希望用户登录应用程序,并仅访问其特定的集合子集。这意味着每个需要从数据库获取某些数据的用户请求都伴有(特定的(DB认证连接。

烧瓶和烧瓶安全等烧瓶的主要扩展似乎不使用MongoDB自己的身份验证机制。

现在一直在寻找一段时间,但我无法解决。

根据用于制作连接字符串的文档。

mongodb://[username:password@]host1[:port1][,...hostN[:portN]]][/[database][?options]]

mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/admin

您可以使用Pymongo库连接到MongoDB。

from pymongo import MongoClient
from flask import Flask, request
app = Flask(__name__)
@app.route('/login')
def login():
    data = request.get_json()
    username = data['username']
    password = data['password']
    database = data['database']
    uri = 'mongodb://'+username+':'+password+'@localhost:27017/'+database
    print(uri) 
    app.config['uri'] = uri

@app.route('/some_endpoint')
def do_some_work():
    uri = app.config['uri']
    client = MongoClient(uri)
    # now use this as per your requirement.       
    client.close() 
if __name__ == '__main__':
    app.run()

这只是一个例子。您可以将其存储在app.config中并根据需要使用。

您可能想看到的另一个参考。

您可能需要重新考虑该方法作为与每个用户打开新的DB连接的方法,将登录到您的应用程序的每个用户可能不太扩展,因为Mongo为每个新连接创建了一个新线程。<<<<<<<<<<<<<</p>

参见:mongodb-max-connections

我会考虑一些烧瓶的rbac,例如烧瓶安全。

最新更新