現在、サインインに成功するとアプリがユーザーを自分のプロファイルにリダイレクトするようにアプリを設定していますがlocalhost:3000/users/id
、私が最初のユーザーであり、このプロファイルに完全にアクセスできるid => 1
と入力した場合. users/2
私はdeviseを使ってこれを止める方法を見つけようとしています。私はレールにかなり慣れてbefore_filter :authenticate_user!
いないので、単純なものが欠けていると確信しています. CanCanについて少し読んだことがありますが、これは私が達成しようとしていることに対して少しやり過ぎのようです。どんなポインタでも大歓迎です。
users_controller.rb
class UsersController < ApplicationController
before_filter :authenticate_user!
before_filter :user_authorization
def index
@users = User.all
end
def show
@user = User.find(current_user[:id])
end
private
def user_authorization
redirect_to(root_url) unless current_user.id == params[:id]
end
end
これはサーバーから報告されています:
Started GET "/users/2" for 127.0.0.1 at 2012-06-24 13:00:38 +0200
Processing by UsersController#show as HTML
Parameters: {"id"=>"2"}
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = 2 LIMIT 1
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 2]]
Redirected to http://localhost:3000/
Filter chain halted as :user_authorization rendered or redirected
Completed 302 Found in 20ms (ActiveRecord: 0.8ms)