将GET参数添加到Play Framework 2.2响应

时间:2014-03-21 18:31:22

标签: java javascript playframework playframework-2.2

我有一个Play Framework 2.2.2版应用程序。这很简单。我正在扩展Security.Authenticator以处理我的请求身份验证。

我正在(通过请求,GETPOST)传递域上其他应用生成的授权令牌。在数据库中查找此令牌,最终将返回用户的userId(而不是播放演示中的字符串userName

我想做的是将userId附加到GET,以便我可以使用Javascript提取参数,因为我目前所有的JS代码都依赖于userId,而不是身份验证令牌。

有没有办法实现这一目标,还是我试图以错误的方式解决这个问题?我需要避免使用cookie,除非它不可能。

谢谢!

修改

以下是我打算逐步分解的内容:

  • Frontend JS通过浏览器的GET请求发出播放应用程序的请求(例如http://mycompany.com/playapp/home?authToken=5hgys7Sgh2u4iblahblah
  • 请求包含authToken参数,用于在用户身份验证数据库表中查找
  • 播放Security.Authenticator拦截请求,然后将其发送到目标控制器(让我们说控制器是Application.java) - 扩展Secured的{​​{1}}类会在Security.Authenticator数据中查找authToken。 - 该值用于对GET进行反向查找。 - 重写userIdSecured以将userId作为字符串返回(例如public String getUsername(Http.Context ctx))。

现在我想做的是修改网址以在其上附加userId(例如http://mycompany.com/playapp/home?authToken=5hgys7Sgh2u4iblahblah & userId = 1234

我不完全确定这是可能的......但是说它足够了,我需要通过浏览器发出请求,进行身份验证,然后,在成功请求后,让javascript知道{ {1}}是。我想在没有设置cookie的情况下这样做,但现在似乎不太可能,我想的就越多......

更新

所以我最终做的是在会话中从我的Secured.java中设置我的"1234",如下所示:

userId

然后,从使用注释验证的任何方法,我从会话中检索userId,如下所示:

ctx.session().put("userId", userId);

然后我将userId传递给我的页面模板,并将其插入到Javascript变量中。像魅力一样,不需要饼干。

1 个答案:

答案 0 :(得分:1)

通常,您会在GET返回的HTML页面中返回userId。 userId可以作为Javascript或HTML在页面中。或者在cookie中返回,javascript可以获取cookie。

但许多潜在的安全问题。您将如何信任userId在未来的请求中回来?