播放2:如何获得包含反向路由时未编码的参数的URL?

时间:2015-03-13 17:12:27

标签: routing playframework-2.0 url-encoding

这是我的路线:

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

但我希望网址看起来像这样:

mydomain.com/login?from=/my/page

我可以获得这个很好的网址,任何人都可读,这样做:

public Result onUnauthorized(Http.Context context) {
    return redirect(controllers.routes.Auth.login().url() + "?from=" + context.request().uri());
}

路线:

GET /login controllers.Auth.login()

但那是错的。

有人可以告诉我它是否可行吗?任何帮助表示赞赏。

由于

1 个答案:

答案 0 :(得分:0)

我不会这样做 - 斜杠甚至在参数中也有用,所以它应该被编码。

出于安全原因,这不是最佳选择。

另一方面,在Play中你有其他可能传递返回URL,我最喜欢的是Flash / Session范围和/或mem Cache API。如果您对细节感兴趣,请告诉我,我会编辑答案。