在Rails中,授权用户访问模型的最佳做法是什么?

时间:2011-12-05 18:51:54

标签: ruby-on-rails security devise authorization cancan

我正在使用Devise进行用户身份验证和基本身份验证。假设我已经定义了用户和汽车之间的两个相互关联。

  • 用户has_many :cars
  • 汽车belongs_to :user

用户A的车辆ID为1,用户B的车辆ID为2。

阻止用户A访问/cars/2资源的最佳做法是什么?我可以为每个控制器添加一个before_filter:show,:edit,:update,:destroy,但这看起来很乏味且重复。有没有办法为此目的使用Devise或CanCan?

1 个答案:

答案 0 :(得分:2)

您可以使用CanCan进行此操作,请在此处详细了解https://github.com/ryanb/cancan

load_and_authorize_resource添加到控制器顶部后

您可以将以下行添加到您的能力模型中,仅允许车主管理

  

可以:manage,Car,:user_id => user.id