2016-04-05 2 views
0

In meiner Controller-ich habe zwei Aktionen ActionA und ActionB, In ActionA i eine Zeichenfolge, die ich für das zu ActionB senden will ich es tue, wie dies, wie Parameter in URL zu übergeben, ohne in url in playframework zeigt

object MyController extends Controller { 

    def ActionA= Action { 
     var str="abc" 
      Redirect(controllers.routes.MyController.ActionB(str)) 
     } 

    def signupProcessing1(token:String)= Action { 
     Ok("string is " + token) 
     } 
    } 

in der Routendatei

GET /user/actionB controllers.MyController.ActionB(token:String) 

GET /user/actionA controllers.MyUserController.ActionA 

wenn ich localhost:9000/user/actionA seinen Browser getroffen zu dieser uRL weitergeleitet

localhost:9000/user/actionB?token="abc" 

ich möchte nicht, dass in der URL dieser Zeichenfolge "abc" um zu zeigen, für i POST statt GET verwendet

POST /user/actionB controllers.MyController.ActionB(token:String) 

GET /user/actionA controllers.MyController.ActionA 

Aber es gibt Ausnahmen

`Action not found` 

    For request 'GET /user/actionB?token=abc' 

Bitte helfen Sie mir, wie kann Ich übergebe Parameter von einer Aktion zu einer anderen ohne in der URL zu zeigen

Antwort

2

Die HTTP-Spezifikation für Redirect ist nicht soll die Methode von GET nach POST ändern.

Aber es gibt ein paar Dinge, die Sie tun können, um Ihr Problem zu lösen.

Der einfachste Ansatz ist nicht zu umleiten, nur uns auf Ihre Aktion:

def ActionA = { 
    val str = "abc" 
    ActionB(str) 
    } 

    def ActionB(token: String) = Action { 
    Ok("string is " + token) 
    } 

In diesem Fall wird die URL ActionA bleiben

Ein weiterer Ansatz ist, ein Cookie zu verwenden

def ActionA = Action { 
    val str="abc" 
    Redirect(controllers.routes.MyController.ActionB).withCookies(
     Cookie("token", str)) 
    } 

    def ActionB = Action { r => 
    r.cookies.get("token") match { 
     case Some(cookie) => 
     val token = cookie.value 
     Ok("string is " + token) 
     case _ => Unauthorized 
    } 
    } 

In diesem Fall ändert sich die URL zu ActionB

Wenn Sie in der Authentifizierung und Autorisierung Implementierungen interessiert sind, können Sie auf einige von ihnen hier

einen Blick