私は現在Playを使用しています! 1.2.2とその新しいNettyクライアントフレームワークです。再生時にSSLを適用してください!フレームワーク
HTTPとHTTPSを非同期で処理することはできますが、SSLを強制する簡単な方法はありませんでした。 Playで働いている人は誰ですか? SSLを強制する簡単な方法がありますか?リダイレクトを作成する必要がある場合、またはconf
ファイルでこれをすばやく解決できるかどうかは不明です。
私は現在Playを使用しています! 1.2.2とその新しいNettyクライアントフレームワークです。再生時にSSLを適用してください!フレームワーク
HTTPとHTTPSを非同期で処理することはできますが、SSLを強制する簡単な方法はありませんでした。 Playで働いている人は誰ですか? SSLを強制する簡単な方法がありますか?リダイレクトを作成する必要がある場合、またはconf
ファイルでこれをすばやく解決できるかどうかは不明です。
SSLを実施するにはいくつかの方法があります。
まず、あなたが
<a href="@{Application.index.secure()}">index page</a>
また例えば、.secure()
メソッドを使用するすべてのアクションを設定することができ、そしておそらく最良の方法は、そのようなApacheのは、nginxのように、フロントエンドHTTPサーバを経由して、これを行うことですまたはLighttpd。
フロントエンドhttpサーバーのアイデアは、アプリケーションがポート9000上で動作するが、外部ネットワークからはアクセスできないということです。 HTTPはすべての着信要求を処理し、HTTPSのみを受け入れるように構成されています。 HTTPSはHTTPサーバーによって処理され、要求はPlayに転送されます。
これにより、Playアプリケーション全体が正常に機能し、SSLが別のアプリケーションにオフロードされます。
この同じ方法は、HTTPサーバーではなくロードバランサに適用できますが、企業環境で実行されている場合を除き、大半の人がHTTPサーバーのはるかに安価な代替方法を採用すると思います。
コントローラでは、request.secureと照合してリダイレクトを行うか、または403/access deniedを返すことができます。
あなたは全体のコントローラがこれを行うために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
herokuを使用している場合、このコードは「Too Many Redirects」を引き起こします。ここから同様のコードを使用してください:http://stackoverflow.com/questions/7415030/enforce-https-routing-for-login-with-play-framework – seePatCode
非常に役に立ったと私は複数の方法の検討を感謝します。 – crockpotveggies