【发布时间】:2017-12-12 15:59:43
【问题描述】:
我正在尝试为我的网站设置某些访问限制,这意味着我希望管理员看到与普通用户不同的页面。我使用 devise 进行用户身份验证,使用 cancancan 进行访问限制。不幸的是,我不太清楚如何用 cancancan 实现它。
我通过为用户分配 2 个不同的角色(布尔值)来标记用户 - 管理员和慈善机构。基本上,我希望管理员在登录时登陆页面 A,并且他还应该可以访问页面 B 和 C(以及 rails_admin)。慈善用户应该登陆页面 D,并且应该可以访问页面 E 和 F。
我尝试将以下代码添加到 app/model/ability.rb 但不幸的是没有任何运气:
user ||= User.new # guest user (not logged in)
if user.admin_role?
can :manage, :page A
can :manage, :page B
can :manage, :page C
can :access, :rails_admin # only allow admin users to access Rails Admin
end
if user.charity_role?
can :manage, page D
can :manage, page E
can :manage, page F
end
有人知道我应该改变什么吗?还有,我如何确保管理员登录后登陆页面A,慈善机构登陆页面D?
如果有任何帮助,我将不胜感激!
【问题讨论】:
-
您拥有
page X的位置通常应该是您可以访问(能力)的对象类,所以我对您的期望有点困惑。也许看到这里link。然后呈现给用户的页面由控制器和视图控制。 -
哦,好吧,这不是定义管理员可以访问哪些页面以及用户可以访问哪些页面的正确位置吗?
-
顺便感谢您提供的链接。即使没有完全阐明我的问题,阅读也很有帮助
标签: ruby-on-rails devise rails-admin cancancan