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

标签 java javascript playframework playframework-2.2

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

我正在传入(通过请求,GETPOST)域中另一个应用程序生成的授权 token 。该 token 会在数据库中查找,并最终返回用户的 userId(而不是像 Play 演示中那样的字符串 userName

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

有什么办法可以做到这一点,还是我试图以错误的方式解决这个问题?我需要避免使用 cookie,除非不可能。

谢谢!

编辑

这是我打算逐步分解的事情:

  • 前端 JS 通过浏览器的 GET 请求向 Play 应用程序发出请求(例如 http://mycompany.com/playapp/home?authToken=5hgys7Sgh2u4iblahblah )
  • 请求包含一个 authToken 参数,用于在用户身份验证数据库表中查找
  • Play Security.Authenticator 在请求到达其预期 Controller 之前拦截请求(假设 Controller 是 Application.java) - 扩展 Security.AuthenticatorSecured 类在我的 GET 数据中查找 authToken。 - 该值用于对 userId 进行反向查找。 -Securedpublic String getUsername(Http.Context ctx) 被重写,以字符串形式返回 userId(例如 "1234") .

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

我不完全确定这是可能的......但足以说明,我需要通过浏览器发出请求,进行身份验证,然后,在成功请求后,让 javascript 知道 userId 是。我想在不设置 cookie 的情况下执行此操作,但现在看来不太可能,我想得越多......

更新:

所以我最终做的是在 session 上从 Secured.java 内部设置我的 userId ,如下所示:

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

然后,通过使用注释进行身份验证的任何方法,我都会从 session 中检索 userId,如下所示:

Integer userId = Integer.parseInt(ctx().session().get("uid"));

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

最佳答案

通常您会在 GET 返回的 HTML 页面中返回 userId。 userId 可以以 Javascript 或 HTML 形式出现在页面中。或者以cookie的形式返回,javascript就可以获取到cookie。

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

关于java - 将 GET 参数添加到 Play Framework 2.2 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22566817/

相关文章:

java - 可能的锁定/性能问题

java - 使用 JBOSS 开发人员工作室部署 Web 服务时,Java8 和 JBoss EAP 7 是否存在严重的兼容性问题

javascript - Codeigniter 和 AJAX console.log(结果) 显示未定义

javascript - 使用ajax上传文件

playframework - Play Framework 2 ElasticSearch 存储类型

Java BufferedReader IO 错误。流关闭

java - 什么时候可以增加 jvm (-Xss) 的最大堆栈大小?

javascript - JS无法读取图片宽度

postgresql - 斯卡拉和玩! & Slick & PostgreSQL 自增

playframework - 如何更改play框架2.5.9的http端口