2011-10-30 13 views
0

これは基本的な質問ですが、 。通常、ユーザーがデータベースを更新しようとすると、そのユーザー名をユーザー表のキーとして使用し、そのユーザーのすべての操作を基にします。しかし、私はちょっと気が利いたユーザーが別のユーザー名を使ってクエリを送信して、この弱い形のエンタイトルメントを回避することができるかもしれないことに気がつきました。だから私の質問は本当に、ユーザーが潜在的に別のユーザーIDのデータベースに対して破壊的なアクションを提出するのを防ぐ方法ですか?データベースのレコードを更新/挿入/削除できるようにする方法

答えて

2

セッション内に現在のユーザーのIDを格納する必要があります。これは簡単には操作できません。

私は通常、ユーザオブジェクト上の関係を通じてオブジェクトを参照:

current_user.fragile_records.find(params[:id]).destroy 

これは、所有権のテストを行うための読みやすいと簡単な方法です。

http://guides.rubyonrails.org/security.htmlは、驚くほどよく読まれます。

Railsにはmaintaining user identity (authentication)ensuring user has clearance for an action (authorization)の多くのレディメイドソリューションがあります。

+0

素晴らしい!リンクありがとう! – ennuikiller

関連する問題