クッキーを使って他ユーザーの情報を設定できないように設定 Ruby on RailsでWebサイト公開!に挑戦中
FC2ブログ

Ruby on RailsでWebサイト公開!に挑戦中

レンタルサーバーでWebサイトを公開すべく、Ruby on Railaの勉強をする日々を語ります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

クッキーを使って他ユーザーの情報を設定できないように設定

前回、ユーザー編集機能を作成し、ログインしていないユーザーは編集画面を表示できず、ログイン画面にリダイレクトするように設定しました。今回はさらにクッキーを使ってそのユーザー名を確認し、そのユーザーの情報のみ変更可とし、他人のユーザー情報を変更できないようにします。



前回の設定のみだとユーザーIDが1のユーザーの編集画面のURLは、"http://localhost:3000/users/1/edit"ですが、URL内のユーザーIDに相当する部分を他のユーザーの番号にすると他のユーザーの編集画面を表示でき、変更することも出来てしまいます。

クッキーを使ってログイン中のユーザーを確認し、他のユーザーの情報を編集できないようにします。

●Usersコントローラに同一ログインユーザーかチェックするbeforeフィルター設定

$ vi app/controllers/users_controller.rb

class UsersController < ApplicationController
before_action :correct_user, only: [:edit, :update]
  :
def edit
end

def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
redirect_to user_path
else
render 'edit'
end
end

private
def correct_user
user = User.find(params[:id])
current_user = User.find_by(remember_token: cookies[:remember_token])
redirect_to login_users_path unless user == current_user
end



●動作確認

ログイン後、下記URL部のユーザーIDを他のユーザーのIDを入力してアクセスすると、
http://localhost:3000/users/1/edit

他ユーザーの編集画面ではなく、ログインページにリダイレクトされる事を確認しました。

| アプリ作成 | 10:04 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://hbnist76.blog.fc2.com/tb.php/510-9994f9ea

TRACKBACK

PREV | PAGE-SELECT | NEXT