在Rails中添加路由安全性

时间:2011-07-25 18:44:29

标签: ruby-on-rails security routes

在Rails 2中,如何阻止用户只更改id#并访问其他对象?

例如:

website.com/users/1231/edit

如何阻止用户更改1231并访问其他帐户?

3 个答案:

答案 0 :(得分:8)

@user = User.find params[:id]
redirect_to :back unless current_user == @user

答案 1 :(得分:2)

在控制器中使用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

答案 2 :(得分:-1)

使用权限检查gem,如CanCan或Aegis。两者都有约定,可以自动为每个控制器上的每个方法添加权限检查。