簡體   English   中英

將GET參數添加到Play Framework 2.2響應

[英]Add GET Parameters to Play Framework 2.2 Response

我有一個Play Framework 2.2.2版應用程序。 這很簡單。 我正在擴展Security.Authenticator來處理我的請求身份驗證。

我正在傳遞(通過請求GETPOST )域上另一個應用程序生成的授權令牌。 該令牌在數據庫中查找,最終將返回用戶的userId (而不是Play演示中的String userName

我想做的是將userId附加到GET,以便我可以使用Javascript提取參數,因為我目前擁有的所有JS代碼都依賴於具有userId ,而不是認證令牌。

有什么辦法可以做到這一點,還是我試圖以錯誤的方式去解決這個問題? 我需要避免使用Cookie,除非這是不可能的。

謝謝!

編輯

這是我打算逐步進行的分解:

  • 前端JS通過來自瀏覽器的GET請求發出播放應用程序的請求(例如http://mycompany.com/playapp/home?authToken=5hgys7Sgh2u4iblahblah
  • 該請求包含authToken參數,用於在用戶auth DB表中查找
  • Play Security.Authenticator在將請求發送到其預期的控制器之前將其攔截(假設該控制器為Application.java )-擴展Security.Authenticator Secured類在我的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的情況下執行此操作,但是現在看來,我想起來的更多了……

更新:

因此,我最終要做的是在會話中的Secured.java內部設置userId ,如下所示:

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

然后,無論使用哪種方法通過注釋進行身份驗證,我都將從會話中檢索userId ,如下所示:

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

然后,我將userId傳遞給我的頁面模板,並將其插入到Javascript變量中。 像魅力一樣工作,不需要cookie。

通常,您將在GET返回的HTML頁面中返回userId。 userId可以以Javascript或HTML的形式出現在頁面中。 或者將其返回到cookie中,然后javascript可以獲取cookie。

盡管存在許多潛在的安全問題。 您如何信任將來的請求中返回的userId?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM