CanCan可以防止未经授权的用户访问URL

时间:2013-09-09 16:09:03

标签: ruby-on-rails ruby cancan

我正在阅读CanCan文档,我发现可以授予精细的资源级别限制/授权。我的问题稍微容易一些。我只需要阻止任何不是特定类别用户的人访问URL。例如,假设我的Rails应用程序上有一个/admin URL。我只希望那些具有admin角色的用户能够去那里并重定向那些不在主页上的用户,CanCan是否也能够处理这种类型的粒度?

1 个答案:

答案 0 :(得分:0)

是的,不仅可能是CanCan的工作。

也许你没有详细阅读过该文档。实际上CanCan可以在控制器级别上运行。它依赖于before_filter authorize!ability课程发送消息,然后以干净有序的方式处理授权。

关于如何处理拒绝,你可以在ApplicationController中拯救它,从exceptions CanCan给你带来的

来判断
rescue_from CanCan::AccessDenied do |exception|
  # Not sure the exact message but the default should be something
  # like "you need blah blah to read admin"
  if expection.message.match /admin/
    redirect_to some_path
  end
end