2012-04-08 8 views
2

I-Methode für alle Anfragen rufen müssen - i tryedPlayframework 2 - Set Session-Variable für jede Aktion

object Global extends GlobalSettings { 

    override def onRouteRequest(request: RequestHeader): Option[Handler] = { 
     var test: String = request.session.get("test").getOrElse { 
      request.session + ("test" -> "123") 
      "000" 
     } 

     println(test) 

     super.onRouteRequest(request) 
    } 

} 

aber ich habe immer "000" in der Konsole und auf Seite keine Cookies für Domain

-Update sehen : neue Cookies, die von ResponseHeader hinzugefügt wurden, aber wie kann ich neue Cookies hinzufügen, bevor RH erstellt wurde? Existiert dort etwas wie Event Listeners? Wie postAction?

+1

Ich denke, Cookies sind im Response-Objekt, nicht in der Anfrage festgelegt. Ich kann mir nicht vorstellen, wie Sie sie hier einstellen würden. –

Antwort

1

Um neue Cookies hinzuzufügen, müssen Sie sie in der Antwort auf die Sitzung hinzufügen, wie in der beschrieben.

Zum Beispiel:

Ok("Hello World!").withSession(
    session + ("saidHello" -> "yes") 
) 

Was Sie versuchen, nicht zu tun, nicht sinnvoll, da Sie einen Cookie hinzuzufügen versuchen, nachdem Sie eine Anfrage vom Browser erhalten (die die Cookies enthält der Browser) . Das bedeutet, dass, wenn Ihr Code funktioniert, Sie diesen Wert immer in der Sitzung haben würden, also würde es nicht nötig sein, die Sitzung dafür zu überprüfen, wie Sie wissen würden, dass sie existiert. Überflüssig werden.

Verwandte Themen