Как мне внедрить тщеславный URL в мое игровое приложение? - PullRequest
1 голос
/ 17 октября 2011

Мне бы хотелось, чтобы у каждого пользователя в моем приложении был выделенный URL-адрес тщеславия в формате http://user1.example.com. Как я могу реализовать это в приложении Play.Спасибо.

Ответы [ 3 ]

2 голосов
/ 17 октября 2011

В методе контроллера вы можете получить имя домена из переменной request.domain. Затем вы можете проанализировать имя пользователя или любой другой идентификатор, который вы хотите использовать, из имени домена, используя что-то вроде:

int endIndex = request.domain.indexOf(".example.com");
if (endIndex <= 0) {
  return null;
}
String subdomain = request.domain.substring(0, endIndex);

Если вы планируете использовать эту проверку поддоменов в нескольких методах, вы можете создать отдельный метод проверки домена с аннотацией @ play.mvc.Before и поместить объект пользователя в renderArgs для последующего использования в фактическом вызываемом методе контроллера и шаблоне. :

@Before
public static void resolveUserSubdomain() {
   ... Check subdomain and find user ...
   renderArgs.put("user", user);       
}

Вы также можете добавить эту проверку домена в отдельный класс контроллеров и включить его в каждый контроллер, где он вам нужен, используя @ play.mvc. С аннотацией для класса.

@With({ExampleDomainCheck.class})
public class ExampleController extends Controller {
    ... Controller methods ...
}
2 голосов
/ 17 октября 2011

Вы можете использовать виртуальные хосты.Из заметок о выпуске в Play 1.1:

Файл маршрутов теперь поддерживает соответствие хостов.это может быть полезно, если параметры действия должны быть извлечены из параметра хоста.Например, для приложения SAAS вы можете использовать:

GET    {client}.mysoftware.com/         Application.index

, а затем автоматически получать значение клиента, как и для любого другого параметра запроса:

public static void index(String client) {
    ...
}

Это должно сделать это.

0 голосов
/ 20 февраля 2012

Я получал нулевые значения, и доменное имя продолжало меняться на localhost: 9000, пока я не решил его, используя ProxyPreserveHost on в файле конфигурации apache (httpd.conf)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...