Rails 2では、ユーザーがid#を変更して他のオブジェクトにアクセスするのを防ぐ方法を教えてください。例えばRailsのルートにセキュリティを追加する
:
website.com/users/1231/edit
私は1231
を変更し、別のアカウントにアクセスしてからユーザーを防ぐにはどうすればよいですか?
Rails 2では、ユーザーがid#を変更して他のオブジェクトにアクセスするのを防ぐ方法を教えてください。例えばRailsのルートにセキュリティを追加する
:
website.com/users/1231/edit
私は1231
を変更し、別のアカウントにアクセスしてからユーザーを防ぐにはどうすればよいですか?
コントローラでbefore_filter
を使用してください。
class Users < ApplicationController
before_filter :require_user, :only => [:show]
private
def require_user
@user = User.find_by_id(params[:id])
redirect_to root_url if @user.nil?
end
end
@user = User.find params[:id]
redirect_to :back unless current_user == @user
ありがとうalock27! – Trip
カンカンやイージスのような権限チェックの宝石を使用してください。両方とも、すべてのコントローラのすべてのメソッドにパーミッションチェックを自動的に追加するという規則があります。
ありがとうChris Ledet! – Trip
User.find(params [:id])は大丈夫です。find_by_idを行う必要はありません。 – eugen
'Users#find'を使用すると、見つからなければ例外がスローされます。 –