こんにちは私はレールに慣れていないので、コントローラーの更新アクションへの不正アクセスを防ぐ方法を見つけようとしています。
ログインしていない人を追い出す before_filer を使用できることはわかっていますがredirect_to
、edit
ユーザーが自分に属していないオブジェクトを編集できないようにする方法が必要です。
例: 許可されたユーザーは、パラメーターとしてany を指定してリクエストをjob
直接送信し、必要なフィールドを変更することで、アプリ内のオブジェクトを簡単に変更できます。PUT
job.id
これが私のコントローラーです:
def update
@job = Job.find(params[:id])
@job.update_attributes(params[:job])
redirect_to jobs_path
end
この問題を解決するためupdate
に、ユーザーが承認されているかどうかをチェックインしようとしました。承認されていない場合は、インデックス ページにリダイレクトします。
def update
@job = Job.find(params[:id])
if @job.user.id != current_login
redirect_to jobs_path
end
@job.update_attributes(params[:job])
redirect_to jobs_path
end
しかし、これを行おうとすると、1 つのアクションでリダイレクトを 1 つしか持てないというエラーが Rails から返されます。