【问题标题】:Have CanCan use Active Admin user?有 CanCan 使用 Active Admin 用户吗?
【发布时间】:2011-10-09 08:19:49
【问题描述】:

我正在使用 Devise 和 CanCan 在 Rails 3 应用程序的前端进行授权。我也有 Active Admin 作为后端的接口。我正在尝试为后端的管理员创建不同的角色。两端都有一个使用不同“用户”模型和表的登录表单。问题是 CanCan 从前端获取当前用户(获取当前用户对象)并使用它来查看后端中的某人是否具有正确的权限。

那么,我如何才能让 CanCan 正确获取已登录的管理员用户?

如果有人需要更多信息,我很乐意提供。

【问题讨论】:

  • 您为什么不想只限制除管理员角色之外的所有人对后端的访问?比你不需要拆分用户模型等。
  • 因为 Active Admin 为其管理员用户使用单独的模型和表。它使用 AdminUser 模型,而站点的其余部分使用 User 模型。之所以这样设置,是因为由于系统的特定原因,数据库有两个截然不同的表,分别是管理员用户和帐户用户。
  • @Brady 还请查看this question 的评论中提到的博客文章。那里描述了如何合并 AdminUserUser 模型。

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


【解决方案1】:

我之前没有使用过ActiveAdmin,但之前在几个项目中使用过Devise and Cancan

看过Active Admin Documentation

设置控制器应该调用的方法来验证当前用户的身份:

  # config/initializers/active_admin.rb
  config.authentication_method = :authenticate_admin_user!

设置在视图中调用的方法来访问当前的管理员用户

  # config/initializers/active_admin.rb
  config.current_user_method = :current_admin_user

您可以通过查看 :current_admin_user 而不是 :current_user 来覆盖应用程序中的 Cancan 行为。

参考这里Cancan changing defaults
如果您仍然无法获得它,请将您的问题发布在您遇到的问题。

【讨论】:

  • 谢谢,贾廷。实际上只好在具体的RB文件中添加controller do def current_ability @current_ability ||= AdminAbility.new(current_admin_user) end end,然后添加一个'admin_ability'模型来区别CanCan默认的Ability模型。
  • 正如Cancan Changing Defaults 链接中提到的那样。很高兴你让它工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多