Ho un'app Play Framework in esecuzione su Heroku, utilizzando l'endpoint SSL di Heroku.Come forzare Play framework 2 a usare sempre SSL?
Desidero rendere tutte le pagine disponibili solo tramite SSL
.
Qual è il modo migliore per farlo?
Finora, la mia soluzione migliore è quella di utilizzare onRouteRequest
nei miei GlobalSettings
e percorso non-SSL
richieste di uno speciale gestore di reindirizzamento:
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
if (Play.isProd && !request.headers.get("x-forwarded-proto").getOrElse("").contains("https")) {
Some(controllers.Secure.redirect)
} else {
super.onRouteRequest(request)
}
}
e
package controllers
import play.api.mvc._
object Secure extends Controller {
def redirect = Action { implicit request =>
MovedPermanently("https://" + request.host + request.uri)
}
}
C'è un modo per fare questo interamente da GlobalSettings
? O qualcosa di ancora migliore?
È possibile disattivare non-ssl iniziando con -Dhttp.port = disabilitato se è quello che stai cercando: http://www.playframework.com/documentation/2.2.x/ConfiguringHttps –
Dal punto di vista di Play, non sto usando SSL. Il bilanciamento del carico di Heroku sta trasmettendo il protocollo SSL a HTTP diretto per l'app. –
c'è stato qualche aggiornamento su questo? Ho finito per fare qualcosa di simile ma avrei preferito l'http disabilitato ma non riuscivo a farlo funzionare. – Setheron