Playframework 使用Java Play框架在url中隐藏参数

Playframework 使用Java Play框架在url中隐藏参数,playframework,routes,playframework-2.0,Playframework,Routes,Playframework 2.0,可以在Java Play Framework 2.x中隐藏url参数吗?我发现了一个类似的问题,但他想把它们藏起来以阻止url黑客攻击。因此,除了隐藏url,他还得到了其他答案/解决方案 问题是我有一些“信息对象”,它有一个ID,我需要传递给几个操作,jquery等等,所以我需要在url中有它。但我不想让任何用户看到ID 例如,我有以下配置: GET /deliverablegraph controllers.Application.deliverable_graph

可以在Java Play Framework 2.x中隐藏url参数吗?我发现了一个类似的问题,但他想把它们藏起来以阻止url黑客攻击。因此,除了隐藏url,他还得到了其他答案/解决方案

问题是我有一些“信息对象”,它有一个ID,我需要传递给几个操作,jquery等等,所以我需要在url中有它。但我不想让任何用户看到ID

例如,我有以下配置:

GET     /deliverablegraph           controllers.Application.deliverable_graph(id:Long,contextId:Long)
如../deliverablegraph?id=xxxx&contextId=yyyy所示


我只想显示../deliverablegraph,但需要访问id和contextId。

我在URL中隐藏参数时遇到了类似的问题,希望我的解决方案能在某种程度上帮助您。唯一的区别是我不想传递非常长的URL参数,因为我需要传递JSON数据。不像你的问题,你不想通过秘密信息

因此,我按照estmatic在评论中所说的,将信息放在隐藏的表单字段中:

<form class='someDynamicForm' method='post' action='@routes.Application.function()'>
    <textarea name="jsonHolder" style="display: none">
        "Used javascript to insert the data I want in here"
    </textarea>
</form>
然后在routes文件中确保:

POST       /json           controllers.Application.function()
这里的缺点是你希望你的身份证是一个秘密。所有的“黑客”要做的就是做一个右键点击->查看页面源代码,他们可以看到隐藏的文本字段中的信息

我在整个web会话中传递信息的另一个解决方案是使用Play的内置
会话


你有没有考虑过使用类似的东西?由于您似乎会经常使用用户的ID,因此在会话中保存他们的ID信息(最终会在他们的cookie中公开)可能是一件值得研究的事情。

隐藏URL参数几乎肯定是错误的。为什么你(认为你)需要这样做?ID应该对用户保密,但我需要在不同页面之间发送ID(我认为可以使用另一种解决方案)并用于jquery。例如,当您单击某个对象时,执行此操作(“this”使用id)。您可以将它们作为页面的一部分呈现在隐藏的表单字段中或作为javascript变量呈现,但不能对用户“隐藏”它们。如果javascript需要这些值,那么想要访问这些值的人也可以访问它们。您可以做的是从您的ID生成某种哈希,并将其与ID一起传递。这样你就可以检查id值是否被弄乱了。谢谢!我认为这是一种方法,即使它不是真正安全的(根本:)。一开始我并不认为这是可能的,但我抓住了一个机会,在这里问。如果ID真的那么敏感,那么我认为你应该研究散列ID,然后让控制器进行验证。
POST       /json           controllers.Application.function()