(使用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
我的问题是,有限的用户今天可以通过后台网址查看其个人资料,因为他“可以管理此用户”。 (当然这是不可接受的)
我知道这不应该太难纠正,但你会使用什么解决方案?
答案 0 :(得分:0)
似乎有一种命名能力的方法。请参阅此处继续项目CanCanCan的Wiki条目:https://github.com/CanCanCommunity/cancancan/wiki/Authorization-for-Namespaced-Controllers
它基本上做的是覆盖Ability
类以传递由ApplicationController
确定的命名空间。 Ability
类有两个不同的规则集,具体取决于它初始化的命名空间。