0
在'新'或'創建'? 在'編輯'或'更新'?在哪個控制器的操作中更好地檢查用戶權限?
我檢查這一行:
correct_user(@car.user) if not current_user.admin?
其中
def correct_user(user)
redirect_to root_path if current_user != user
end
在'新'或'創建'? 在'編輯'或'更新'?在哪個控制器的操作中更好地檢查用戶權限?
我檢查這一行:
correct_user(@car.user) if not current_user.admin?
其中
def correct_user(user)
redirect_to root_path if current_user != user
end
如果這些操作都需要管理員的權利,你最好過濾器之前使用。
before_filter :correct_user, :only => [:new, :create, :edit, :update]
在用戶無法訪問的每一個地方,如果他沒有權限。
我會結構中的代碼,這樣你就不必把它寫在行動:
before_filter :load_car, :redirect_unless_correct_user!, :except => :index
protected
def load_car
@car = Car.find(params[:car_id])
end
def redirect_unless_correct_user!
redirect_to(root_path) unless (current_user == @car.user) || user.admin?
end
的問題是:用戶使「創造」沒有「新」的行動?或者他可以在沒有「編輯」的情況下進行「更新」操作? – bravedick 2012-07-21 13:59:17
是的,他可以僞造一個帖子請求。 – gmalette 2012-07-21 13:59:56