0

这是第 9 章访问控制的片段:

如果多个应用程序共享同一个身份验证数据库,您可能需要禁用迁移:auth.define_tables(migrate=False).

我有一个设置,我想让我的每个应用程序共享相同的用户数据库,但有自己的数据库,这些数据库与用户数据库分开。

尽管浏览了访问控制和数据库抽象层文档,但我没有找到如何设置它的示例。

最好我可以告诉我,我可以在每个应用程序中实例化一个指向用户数据库的新 DAL,但我不确定如何将整个 Auth 指向该数据库以及在哪里设置migrate=false

类似于应用程序db.py文件内部的内容:

auth_db = DAL('sqlite://storage.sqlite',
                  migrate=False)

然后也许,更进一步的变化:

auth = Auth(db, host_names=configuration.get('host.names'))

至:

auth = Auth(auth_db, host_names=configuration.get('host.names'))

我试过了,但没有用。

感谢您澄清在应用程序之间共享身份验证所需的步骤!

4

1 回答 1

0

您必须指明 SQLite 数据库的位置,这可以通过folder参数来完成:

import os
auth_db = DAL('sqlite://storage.sqlite',
              folder=os.path.join(request.folder, '..', 'otherapp', 'databases'),
              migrate=False)

其中“otherapp”被替换为包含 SQLite 文件的应用程序的名称。

于 2019-09-28T04:12:47.173 回答