玩法 2:如何在反向路由时获得参数未编码的 URL?
Play 2: How can I get an URL with parameters that aren't encoded when reverse routing?
这是我的路线:
GET /login controllers.Auth.login(from: String ?= null)
所以,当我这样做时:
public Result onUnauthorized(Http.Context context) {
return redirect(controllers.routes.Auth.login(context.request().uri()));
}
我得到:
mydomain.com/login?from=%2Fmy%2Fpage
但我希望 URL 看起来像这样:
mydomain.com/login?from=/my/page
我可以获得这个漂亮的url,任何人都可以阅读,这样做:
public Result onUnauthorized(Http.Context context) {
return redirect(controllers.routes.Auth.login().url() + "?from=" + context.request().uri());
}
路线:
GET /login controllers.Auth.login()
但这是错误的。
有人能告诉我这是否可行吗?任何帮助表示赞赏。
谢谢
我不会这样做 - 斜杠甚至在参数中都有它的用法,因此应该对其进行编码。
另外,出于安全原因,这不是最佳选择。
另一方面,在 Play 中你有其他可能传递 return URL,我最喜欢的是 Flash/Session scopes and/or in mem Cache API.如果您对细节感兴趣,请告诉我,我会编辑答案。
这是我的路线:
GET /login controllers.Auth.login(from: String ?= null)
所以,当我这样做时:
public Result onUnauthorized(Http.Context context) {
return redirect(controllers.routes.Auth.login(context.request().uri()));
}
我得到:
mydomain.com/login?from=%2Fmy%2Fpage
但我希望 URL 看起来像这样:
mydomain.com/login?from=/my/page
我可以获得这个漂亮的url,任何人都可以阅读,这样做:
public Result onUnauthorized(Http.Context context) {
return redirect(controllers.routes.Auth.login().url() + "?from=" + context.request().uri());
}
路线:
GET /login controllers.Auth.login()
但这是错误的。
有人能告诉我这是否可行吗?任何帮助表示赞赏。
谢谢
我不会这样做 - 斜杠甚至在参数中都有它的用法,因此应该对其进行编码。
另外,出于安全原因,这不是最佳选择。
另一方面,在 Play 中你有其他可能传递 return URL,我最喜欢的是 Flash/Session scopes and/or in mem Cache API.如果您对细节感兴趣,请告诉我,我会编辑答案。