你知道,我想我必須檢查模型回調中的當前用戶(如before_update
)。而不是僅僅依靠在控制器中添加where ('something.user_id = ?', 'current_user.id')
。我在.NET中需要類似Thread.CurrentPrincipal
將用戶模型中的當前用戶引用是否安全?對不起,我不太瞭解它如何在引擎蓋下工作。
或者你怎麼做Rails方式?
對不起,如果這是一個愚蠢的問題。將用戶模型中的當前用戶引用到Rails是否安全?
3/27添加
糟糕
要得到正確的答案,您必須提出正確的問題。這本身並不容易。怎麼可能別人的問題如此模糊,他們得到了答案,而你自己的問題如此明確,但沒人理解呢? :)
我不明白在哪裏安全檢查。用戶只能訪問他自己的東西。在控制器級別?然後測試每一個動作? 「不應該/查看|創建|編輯|銷燬/其他用戶的東西」?我想可能是我可以把它放在模型中,並有一個地方/寫|重構|測試/。這就是爲什麼我問我如何獲得對當前用戶的引用。
其實我很驚訝我沒有在Rails指南或博客中找到任何相關的東西。除了「不這樣做」之外,有人提出了一些問題,但沒有權威的「最佳實踐」。
經過一番思考之後,我決定在控制器before_filter中創建範圍限定在當前用戶的範圍,並且僅僅依靠自己的約定(向自己承諾我不會直接訪問模型)。每個控制器只需測試一次。無論如何,這不是銀行應用程序。