2017-06-23 4 views
0

Ich muss Benutzer auf die Homepage umleiten und ein Cookie hinzufügen. Der folgende Code leitet nur um, fügt jedoch kein Cookie hinzu.Lift/Scala: Wie wird auf eine Seite umgeleitet und ein Cookie hinzugefügt?

S.addCookie(HTTPCookie("foo", "bar")) 
S.redirectTo("/") 

Bitte beraten. Vielen Dank.

object Auth extends RestHelper { 
    def init() { 
    LiftRules.dispatch.append(Auth) 
    } 


    serve { 
    case "auth" :: "xxvvvxx" :: Nil Get request => { 
     val firstName = request.param("first_name").openOrThrowException("First Name not available")   
     val session = request.param("session").openOrThrowException("Session not available")      
     S.addCookie(HTTPCookie("session", session)) 
     S.redirectTo("/") 
    }  
    } 
} 

Antwort

0

Dies ist, wie ich es an die Arbeit:

case "auth" :: "xxvvvxx" :: Nil Get request => { 
    val firstName = request.param("first_name").openOrThrowException("First Name not available")   
    val session = request.param("session").openOrThrowException("Session not available")      
    new RedirectResponse("/", request, HTTPCookie("session", session).setPath("/").setMaxAge(999999)) 
} 

ref1, ref2

+0

Das ist richtig, aber wohl aufgrund eines Fehlers in Aufzug --- nämlich, dass wir uns nicht 'S.responseCookies' berücksichtigt werden, wenn [ Umgang mit 'ResponseShortcutExceptions'] (https://github.com/lift/framework/blob/master/web/webkit/src/main/scala/net/liftweb/http/LiftServlet.scala#L506). Würde ein GitHub-Problem in dieser Angelegenheit begrüßen. –

0

S hat auch die folgende Umleitungsmethode (Dokumentation here)

def redirectTo(where: String, func:() ⇒ Unit): Nothing 

Das dauert eine Funktion, die nach achtern auszuführen ist er die Umleitung.

So kann man auch etwas tun

S.redirectTo("/",() => S.addCookie(HTTPCookie("session", session).setPath("/").setMaxAge(999999))) 
Verwandte Themen