Подтвердить что ты не робот

Принудительно использовать SSL для игры! Фреймворк

В настоящее время я использую Play! 1.2.2 и новую платформу клиента Netty.

Я не нашел простого метода для обеспечения SSL, хотя может получить HTTP и HTTPS для асинхронного обслуживания. Кто-нибудь, кто работал с Play! есть простой способ обеспечения SSL? Не уверен, нужно ли мне создавать перенаправления или если это можно быстро решить в файле conf.

4b9b3361

Ответ 1

Существует несколько способов обеспечения соблюдения SSL.

Во-первых, вы можете установить все свои действия для использования метода .secure(), например

<a href="@{Application.index.secure()}">index page</a>

Альтернативно, и, вероятно, лучший способ - это сделать это через внешний HTTP-сервер, такой как Apache, Nginx или Lighttpd.

Идея внешнего http-сервера заключается в том, что ваше приложение работает на порте 9000, но недоступно из внешней сети. HTTP отвечает за все входящие запросы и настроен только на прием HTTPS. HTTPS обрабатывается HTTP-сервером, а затем запрос отправляется на Play.

Это приведет к тому, что все приложение Play будет работать как обычно, а SSL будет выгружен в другое приложение.

Этот же метод может быть применен к балансировщику нагрузки, а не к HTTP-серверу, но я предполагаю, что большинство людей пойдет с гораздо более дешевой альтернативой HTTP-сервера, если не работает в корпоративной среде.

Ответ 2

В контроллере вы можете проверить на request.secure и либо перенаправить, либо вернуть 403/доступ запрещен.

Вы можете заставить SSL для всего контроллера сделать это:

public static class ForceSSL extends Controller
{
    @Before
    static void verifySSL()
    {
        if (request.secure == false)
            redirect("https://" + request.host + request.url); 
    }
}

... и аннотировать другой контроллер:

@With(ForceSSL.class)
public class Foo extends Controller
{
....
}

См. также http://groups.google.com/group/play-framework/browse_thread/thread/7b9aa36be85d0f7b