2016-06-07 57 views
0

如何隐藏URL中的值?在路线:如何隐藏Play Scala中的Url值?

GET /admin/:userId  com.example.sample.getUser(userId: Int) 

当请求getUser动作,如下图所示格式的URL返回:

http://localhost:9000/admin/0 

我不想在URL中查看userId

+0

你为什么要这么做? – marcospereira

+0

@marcospereira:用户猜测其他用户ID做任何故障,当然,我从会话中检查当前用户登录,但它不公平在url中查看ID。 – user6261979

+0

您试图通过默默无闻的安全措施来达到安全目的,这不是保证安全的最佳方法。如果您使用POST请求隐藏用户标识,则任何用户仍可以猜测并请求其他用户信息。您可以使用非增量和可预测的id生成器(如uuid),但您仍然需要在后端代码中提供其他安全保证。 – marcospereira

回答

0

这是常见的GETPOST的区别。请求参数中的GET是在URL内发送的,POST中没有。

如果你需要避免在网址参数只使用一个HTML form与隐藏字段,而不是a标签发送的请求,并在控制器获取POST参数,虚拟HTML样本:

<form action="/admin/" method="POST"> 
    <input type="hidden" name="userId" value="@userId" > 
    <input type="submit" value="@userName" > 
</form> 

它会给你提交按钮的用户名称作为标签,你可以用CSS来给它感觉和看看常用链接。

请注意,这是无效的REST模式,因为POST不应该用于显示数据,您没有提到这是什么目的,所以也许您应该重新考虑您的需求。

也许你也可以只让的参数使用与默认固定值:
check the docs for more options

+0

感谢您的文章,我试过你的文章,我已经有表格标签,我把你的文章放在另一个表格中,表格提交不能正常工作。 – user6261979

+0

我的示例只是为了显示这种可能性,您必须适合您的需求并在控制器中正确处理此请求 – biesior