web2py-使用相同身份验证的多个应用

问题描述 投票:0回答:1

这是第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'))

我尝试过,但没有用。

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

python web2py
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.