URL直打ちとは
そのままURLに直接打ち込むこと。
対策していないと、他のユーザーが自分のページを編集・更新したりできてしまう。
現在twitterのようなアプリを作成中で、備忘録として書いてます。
対策例
メソッドを作り、関連するcontrollerにbefore_actionに設定する。
例えばcorrect_userというメソッド作る。
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
unless @micropost
redirect_to root_url
end
end
このcorrect_userメソッドを下記のように設定すると、URL直打ちで対象ページに遷移しようとするとき(ここではedit,updateアクション)、正しいユーザーじゃないとトップページにリダイレクトされる。
controller.rb
before_action :correct_user, only: [:edit, :update]
補足
correct_userの中に記入されているcurrent_userはヘルパーメソッドで下記の内容(名前似てるので注意)
def current_user
User.find_by(id: session[:user_id])
end