在游戏中强制执行 SSL!框架
2022-09-02 03:34:05
我目前正在使用 Play!1.2.2 及其新的 Netty 客户端框架。
我还没有找到一种直接的方法来强制执行SSL,尽管可以让HTTP和HTTPS异步服务。有没有人与Play合作过!有一种直接的方法来实施SSL?不确定我是否需要创建重定向,或者是否可以在文件中快速解决。conf
我目前正在使用 Play!1.2.2 及其新的 Netty 客户端框架。
我还没有找到一种直接的方法来强制执行SSL,尽管可以让HTTP和HTTPS异步服务。有没有人与Play合作过!有一种直接的方法来实施SSL?不确定我是否需要创建重定向,或者是否可以在文件中快速解决。conf
有几种方法可以强制实施 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服务器替代方案,除非在企业环境中运行。
在控制器中,您可以根据 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