【发布时间】:2013-01-13 21:27:51
【问题描述】:
我是 Rails 新手,我正在使用设计进行身份验证。
我有一个名为/users/5/events/1/add_images 的路由,current_user 只有在@user == current_user 时才能访问该路由。设置此权限的最佳方法是什么?这应该在控制器级别完成吗?
任何帮助将不胜感激!谢谢!
【问题讨论】:
标签: ruby-on-rails devise ruby-on-rails-3.2
我是 Rails 新手,我正在使用设计进行身份验证。
我有一个名为/users/5/events/1/add_images 的路由,current_user 只有在@user == current_user 时才能访问该路由。设置此权限的最佳方法是什么?这应该在控制器级别完成吗?
任何帮助将不胜感激!谢谢!
【问题讨论】:
标签: ruby-on-rails devise ruby-on-rails-3.2
是的,应该在控制器级别完成。
您可以使用cancan gem 来处理授权。
https://github.com/ryanb/cancan
http://railscasts.com/episodes/192-authorization-with-cancan
粗略地说,你必须定义能力:
can :add_images, Event do |event|
event.user.id == user.id
end
在 events_controller 中,添加一个 before_filter
before_filter :find_event # set @event
before_filter :authorize_add_images, only: :add_images
def authorize_add_images
authorize! :add_images, @event
end
这是大体思路,其余部分请阅读文档。
【讨论】: