【问题标题】:how to update mongo_prefix dynamically for an python eve app如何为 python eve 应用程序动态更新 mongo_prefix
【发布时间】:2018-08-14 05:27:03
【问题描述】:

我已经使用不同的 mongo_db_prefixes 定义了两个 mongo db,例如:

USER1_MONGO_DBNAME = 'user1db'
USER2_MONGO_DBNAME = 'user2db'

两个用户的其余 mongodb 设置相同。

如果我想动态更改用于 eve 应用程序的 mongodb 名称,我该如何更改?

【问题讨论】:

  • 通过 api 或其他规则,change dynamically 是什么意思?
  • 假设我有一个 python eve 应用程序正在运行并且这个应用程序服务于一些端点,比如员工。该端点用于从 mongodb 发布和获取数据。假设我将为员工端点发送一个带有一些 json 数据的 POST 请求。通常,员工端点将使用默认的 mongodb 集合“员工”来存储和从 mongodb 获取员工数据。但我的要求是端点应该根据发布数据中存在的 private、Govt、Self 等 employee_type 值将发布的数据存储到不同的 mongodb 集合中。

标签: python flask eve


【解决方案1】:

看看这个来自documentation的sn-p:

from eve.auth import BasicAuth

class MyBasicAuth(BasicAuth):
    def check_auth(self, username, password, allowed_roles, resource, method):
        if username == 'user1':
            self.set_mongo_prefix('MONGO1')
        elif username == 'user2':
            self.set_mongo_prefix('MONGO2')
        else:
            # serve all other users from the default db.
            self.set_mongo_prefix(None)
        return username is not None and password == 'secret'

app = Eve(auth=MyBasicAuth)
app.run()

此示例根据经过身份验证的用户切换 DB。您也可以在回调函数中使用set_mongo_prefix 方法,请参阅Event Hooks

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2011-10-19
    • 2016-06-28
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多