web2py - несколько приложений, использующих один и тот же Auth - PullRequest
0 голосов
/ 27 сентября 2019

Вот фрагмент из главы 9 Контроль доступа :

Если несколько приложений используют одну и ту же базу данных аутентификации, вы можете отключить миграции: auth.define_tables(migrate=False).

У меня есть установка, в которой я хотел бы, чтобы каждое из моих приложений совместно использовало одну и ту же пользовательскую базу данных, но у меня есть собственные базы данных, которые отделены от пользовательской БД.

Несмотря на то, что я просматривал Access Control и Документация по уровню абстракции базы данных Я не нашел пример того, как это настроить.

Насколько я могу судить, я могу создать новый DAL, указывающий на базу данных пользователей вкаждое приложение, но я не уверен, как указать всю аутентификацию для этой базы данных и где установить 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'))

Я попробовал это, и это не сработало.

Разъяснение по шагамтребуется разделить аутентификацию между приложениямиeciated!

1 Ответ

0 голосов
/ 28 сентября 2019

Необходимо указать местоположение базы данных SQLite, что можно сделать с помощью аргумента folder:

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

, где «otherapp» заменяется именем приложения, содержащего файл SQLite..

...