2013-01-13 26 views
1

我希望能夠允許用戶使用AJAX對資源進行投票,但是,我並不確定如何在我的內部獲取current_user的ID資源的控制器。如何使用Devise和activerecord-reputation-system獲得用於Ajax投票的current_user

我搜索了很多,我已經閱讀了很多建議,將user_id保存爲隱藏字段,然後使用它發送AJAX請求,但是這不會讓我知道安全漏洞?任何惡意用戶都可以改變user_id,然後以他選擇的隨機用戶的身份進行投票。

獲取AJAX請求的current_user ID的標準方法是什麼?

感謝

+0

使用salting和散列技術來存儲對用戶標識的引用。有技術使它非常安全。查看'鹽和哈希'。一旦數據安全,然後使用隱藏字段,將哈希和用戶名通過ajax請求傳遞給控制器​​。驗證用戶名和哈希值是否匹配,然後獲取該ID並進行投票。 – Ohgodwhy

回答

2

如果整個事情背後的認證,你應該不需要user_ID的存儲視圖,或者花什麼力氣四處傳遞。正常情況下,只需在控制器中訪問current_user(或current_user.id)。

「整個東西都是身份驗證」我的意思是控制器的視圖具有投票界面,以及AJAX請求的目標控制器應該都有before_filter :authenticate_user!,或者派生自類。如果是這種情況,設計人員將按照與其他經過驗證的請求相同的方式識別用戶。請求是JSON並不重要,除非您可能需要調整未經授權的行爲,以便將包含JavaScript重定向到您的登錄信息中,如果您還沒有這種類型的話。

+0

你能否澄清一下你的意思是「整個事情都是身份驗證」? 我的服務器將如何識別哪個用戶正在嘗試對資源投票?如果10個人嘗試對資源投票,並且10個Ajax請求被髮送到我的服務器,那麼每個用戶如何識別? –

+0

我稍微擴大了答案,試圖澄清。基本上,無論請求類型如何,您都可以使用相同的方式進行設計。 –

+0

謝謝。我只是測試了一下,它沒有任何額外的工作。 非常酷,就我而言這似乎很神奇,但非常方便。我想我有一些閱讀要做。 –

相關問題