如何在 url 中传递参数而不在 playframework 的 url 中显示
how to pass parameters in url without showing in url in playframework
在我的控制器中,我有两个操作 ActionA
和 ActionB
,在 ActionA
中,我有一个字符串,我想发送到 ActionB
,因为我正在做像这样
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)
}
}
在路由文件中
GET /user/actionB controllers.MyController.ActionB(token:String)
GET /user/actionA controllers.MyUserController.ActionA
当我在浏览器中点击 localhost:9000/user/actionA
它被重定向到这个 url
localhost:9000/user/actionB?token="abc"
我不想在 url 中显示此字符串 "abc" 因为我使用 POST
而不是 GET
POST /user/actionB controllers.MyController.ActionB(token:String)
GET /user/actionA controllers.MyController.ActionA
但它给出了异常
`Action not found`
For request 'GET /user/actionB?token=abc'
请帮助我如何将参数从一个动作传递到另一个动作而不显示在 url
重定向的 HTTP 规范并不意味着将方法从 GET 更改为 POST。
但是您可以采取一些措施来解决您的问题。
最简单的方法是不重定向,只转发到您的操作:
def ActionA = {
val str = "abc"
ActionB(str)
}
def ActionB(token: String) = Action {
Ok("string is " + token)
}
在这种情况下,URL 将保留 ActionA
另一种方法是使用 cookie
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
}
}
在这种情况下,url 将更改为 ActionB
如果您对身份验证和授权的实现感兴趣,可以在此处查看其中的一些内容
在我的控制器中,我有两个操作 ActionA
和 ActionB
,在 ActionA
中,我有一个字符串,我想发送到 ActionB
,因为我正在做像这样
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)
}
}
在路由文件中
GET /user/actionB controllers.MyController.ActionB(token:String)
GET /user/actionA controllers.MyUserController.ActionA
当我在浏览器中点击 localhost:9000/user/actionA
它被重定向到这个 url
localhost:9000/user/actionB?token="abc"
我不想在 url 中显示此字符串 "abc" 因为我使用 POST
而不是 GET
POST /user/actionB controllers.MyController.ActionB(token:String)
GET /user/actionA controllers.MyController.ActionA
但它给出了异常
`Action not found`
For request 'GET /user/actionB?token=abc'
请帮助我如何将参数从一个动作传递到另一个动作而不显示在 url
重定向的 HTTP 规范并不意味着将方法从 GET 更改为 POST。
但是您可以采取一些措施来解决您的问题。
最简单的方法是不重定向,只转发到您的操作:
def ActionA = {
val str = "abc"
ActionB(str)
}
def ActionB(token: String) = Action {
Ok("string is " + token)
}
在这种情况下,URL 将保留 ActionA
另一种方法是使用 cookie
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
}
}
在这种情况下,url 将更改为 ActionB
如果您对身份验证和授权的实现感兴趣,可以在此处查看其中的一些内容