Cancan:用户可以看到它的后台显示视图

时间:2014-10-20 13:08:52

标签: ruby-on-rails ruby-on-rails-4 cancan

(使用rails 4,Cancan 1.6.10)

大家好,

我有两个UsersController:一个用于前面,另一个用于/backoffice用于后面,两个都使用相同的User模型。

我为“普通用户”定义了这样的能力:

can(:manage, User) do |u|
  u == user
end

而管理员用户将能够管理所有用户:

can :manage, User

我还有两个“显示”视图,一个在前面:/users/:id,一个在后台:/backoffice/users/:id

我的问题是,有限的用户今天可以通过后台网址查看其个人资料,因为他“可以管理此用户”。 (当然这是不可接受的)

我知道这不应该太难纠正,但你会使用什么解决方案?

1 个答案:

答案 0 :(得分:0)

似乎有一种命名能力的方法。请参阅此处继续项目CanCanCan的Wiki条目:https://github.com/CanCanCommunity/cancancan/wiki/Authorization-for-Namespaced-Controllers

它基本上做的是覆盖Ability类以传递由ApplicationController确定的命名空间。 Ability类有两个不同的规则集,具体取决于它初始化的命名空间。