这是第9章Access Control中的摘录:
[如果多个应用共享相同的身份验证数据库,则可能要禁用迁移:
auth.define_tables(migrate=False)
。
我有一个设置,我希望每个应用共享相同的用户数据库,但拥有自己的数据库,这些数据库与用户数据库分开。
尽管浏览了访问控制和The Database Abstraction Layer文档,但没有找到有关如何进行设置的示例。
据我所知,我也许可以在每个应用中实例化一个指向用户数据库的新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'))
我尝试过,但没有用。
感谢您澄清在应用之间共享身份验证所需的步骤!
您必须指出SQLite数据库的位置,这可以通过folder
参数完成:
import os
auth_db = DAL('sqlite://storage.sqlite',
folder=os.path.join(request.folder, '..', 'otherapp', 'databases'),
migrate=False)
其中“ otherapp”被替换为包含SQLite文件的应用程序的名称。