[英]Add GET Parameters to Play Framework 2.2 Response
我有一個Play Framework 2.2.2版應用程序。 這很簡單。 我正在擴展Security.Authenticator
來處理我的請求身份驗證。
我正在傳遞(通過請求GET
或POST
)域上另一個應用程序生成的授權令牌。 該令牌在數據庫中查找,最終將返回用戶的userId
(而不是Play演示中的String userName
。
我想做的是將userId
附加到GET,以便我可以使用Javascript提取參數,因為我目前擁有的所有JS代碼都依賴於具有userId
,而不是認證令牌。
有什么辦法可以做到這一點,還是我試圖以錯誤的方式去解決這個問題? 我需要避免使用Cookie,除非這是不可能的。
謝謝!
編輯
這是我打算逐步進行的分解:
authToken
參數,用於在用戶auth DB表中查找 Security.Authenticator
在將請求發送到其預期的控制器之前將其攔截(假設該控制器為Application.java
)-擴展Security.Authenticator
Secured
類在我的GET
數據中查找authToken
。 -該值用於對userId
進行反向查找。 - Secured
類public 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.