2013-08-27 3 views
1

Я использую приложение Multi-tenancy, используя Flask и App Engine. Я использую субдомен как мое пространство имен (пространство имен приложения). Ниже мой дизайн:Приложение с несколькими приложениями, использующее флеш-приложение и приложение

Когда test.domain.com доступа пользователя, я буду проверять, является ли субдомен «тест» в модели SudDomain, которая, как показано ниже:

class SubDomain: # subdomain stored as id 
    pass 

Если «тест» есть в SubDomain пользователь будет перенаправлен на страницу входа в приложение, а в текущем пространстве имен приложения установлено значение «test». В противном случае отображается страница регистрации.

Как реализовать его в среде производства и разработки? Я хотел бы сделать следующее:

В производстве:

Использование before_request декоратора, я хотел бы сделать:

from urllib2 import urlparse 
from flask import request 

url_info = urlparse.urlparse(request.url) # Say, http://test.domain.com 
subdomain = url_info.netloc.split(".")[0] 

Эта подобласть может быть проверен на SUBDOMAIN модели и выполните остальные шаги.

В разработке:

Я не знаю, как реализовать этот сценарий. Я думаю: Запросы будут в форме http://localhost:8888/test/list/, здесь «тест» считается субдоменом. Что-то в before_request декораторах будут удалены, так что измененный запрос будет выглядеть как http://localhost:8888/list/, и это приведет к правильной конечной точке. Можно ли так сделать в колбе?

Затем извлеченный субдомен - 'test' будет проверен в модели SubDomain.

Я делаю это правильно? Что-то не так в моем методе, особенно в местной среде разработки?

BTW, это мое первое приложение с несколькими арендаторами, пожалуйста, несите меня.

Заранее спасибо ..

ответ

3

я сделал что-то подобное тому, что вы сделали здесь, но в конце концов, это было больше работы, чем просто добавить вещи в свой файл и т.д.// хостов.

Первая попытка, которую я сделал, была похожа на вашу и реализована путем изменения маршрутизатора в зависимости от среды. Тогда создатель обратного маршрута создает его легко, но по мере его роста вам придется дважды поддерживать маршруты для dev/live, что легко сделать, но просто не стоит проблем.

Так что просто измените свой хост-файл, добавьте домены, которые вы хотите проверить.

# on Linux/Unix at /etc/hosts 
127.0.0.1 www.example.dev sub1.example.dev sub2.example.dev 

# on windows its in system32\drivers\etc\ 

Если вы используете Linux/Mac можно также установить Dnsmasq, где вы можете просто определить целое расширение для Девой работы. Например, все .dev на моем указывает на localhost, например: www.example.dev

Таким образом, вам просто нужно будет сделать переменную для вашего маршрута домена от .com -> .dev на производстве и разработке.

Затем вы можете начать доступ к своим серверам Appengine Дев на http://www.example.dev:8888/

+0

Спасибо за предложение. Мой метод для локального dev env был сложным, и я не могу сказать, что он работает. Таким образом, я закончил добавление имени поддомена в настройках в случае локального разработчика, попробует также ваш метод. dnsmasq выглядит как удобный инструмент. – rajpy

Смежные вопросы