使用 CanCan 进行管理员授权

发布于 2024-10-12 19:19:33 字数 96 浏览 3 评论 0原文

A 有一堆具有 Admin 命名空间的控制器。我想限制对这些的访问,除非用户是管理员。有没有办法使用 CanCan 来做到这一点,而不必调用未经授权的!在每个控制器的每个方法中?

A have a bunch of controllers with the Admin namespace. I want to restrict access to these unless the user is an admin. Is there a way to do this using CanCan without having to call unauthorized! in every method of every controller?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

丢了幸福的猪 2024-10-19 19:19:33

将应用程序控制器添加到您的命名空间,并为其添加一个 before 过滤器。

class ApplicationController < ActionController::Base
end

class Admin::ApplicationController < ApplicationController 
  # these goes in your namespace admin folder
  before_filter :check_authorized

  def check_authorized
    redirect_to root_path unless can? :admin, :all
  end
end

class SomeadminController < Admin::ApplicationController
   def some_action
     # do_stuff
   end
end

Add an application controller to your namespace and a before filter to it.

class ApplicationController < ActionController::Base
end

class Admin::ApplicationController < ApplicationController 
  # these goes in your namespace admin folder
  before_filter :check_authorized

  def check_authorized
    redirect_to root_path unless can? :admin, :all
  end
end

class SomeadminController < Admin::ApplicationController
   def some_action
     # do_stuff
   end
end
差↓一点笑了 2024-10-19 19:19:33

CanCan 的 Admin Namespaces wiki 页面列出了此问题的几种解决方案。

  • 正如 @mark 建议的那样,为管理员设置一个基本控制器,用于检查每个操作的授权。
    • 如果您需要的只是检查用户是否拥有管理员,那么您可能根本不需要使用 CanCan 来实现此目的
      旗帜。
  • 为了以不同的方式处理管理员(而不是仅与普通用户不同),
    考虑一个单独的 AdminAbility 类(这有点偏离主题,但可能证明是相关的)。

The Admin Namespaces wiki page for CanCan lists out several solutions to this problem.

  • As @mark suggested, have a base controller for admins which checks authorization for every action.
    • You may not need to use CanCan at all for this if all you require is to check that users have an admin
      flag.
  • For handling admins differently from each other (as opposed to differently from regular users only),
    consider a separate AdminAbility class (this is a little off-topic, but could prove relevant).
故事和酒 2024-10-19 19:19:33

现在rails_admin已经完全支持Cancan,你可以在它的官方网站上找到它,有一个关于这个主题的wiki页面:

Rails 管理员对 CanCan 的授权

now rails_admin has full support with Cancan, you can find it in its official website, there is a wiki page for this topic:

Rails Admin's authorization with CanCan:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文