我开始使用python在Google App Engine中开发多租户应用,我可以使用一些帮助来提取用户的子域,以便在开发过程中测试命名空间。
通过创建appengine_config.py并按如下方式定义其内容,我从文档和书籍中了解了如何将命名空间设置为固定字符串(例如' abc'):
from google.appengine.api import namespace_manager
def namespace_manager_default_namespace_for_request():
return 'abc' # Used to test
我可以在命名空间' abc'下的数据存储区中存储新项目。因为所有数据存储区操作现在都将在运行会话中使用此命名空间。如果我然后改变这个来说'def'并再次运行应用程序数据与以前分开。到目前为止一切都很好。
但是,我需要在开发期间(= localhost)自动测试设置命名空间,这样我们才能真正地保证我们将客户端内容彼此分开,例如从Chrome和Mozilla同时使用来自不同子域的用户登录localhost:8080,以确保没有数据泄露。
假设我使用user@abc.example.com登录,我需要提取' abc'无需自己解析用户的电子邮件。
我将appengine_config.py更改为以下内容:
from google.appengine.api import namespace_manager
def namespace_manager_default_namespace_for_request():
return namespace_manager.google_apps_namespace()
但是,它总是在localhost中返回None作为命名空间。
我有什么想法,或者我可以使用哪些功能来提取appengine_config.py中的用户子域名?
提前致谢: - )