2016-06-07 70 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