我成功地使用Devise和CanCan创建了登录系统,并拥有3种类型的用户:管理员、内部用户和全局用户。我创建了控制器和索引操作:Admin、Cpanel、Report和State,并希望限制某些用户访问这些控制器。
管理员用户应该有权限访问:报告(全部)、状态(读取)、管理(全部)。
全局用户应该有权限访问:报告(只读)、状态(读取)、控制面板(全部)。
内部用户应该有权限访问:报告(全部)、状态(读取)。
我尝试使用ability.rs中的以下代码来实现此功能。
管理员用户应该有权限访问:报告(全部)、状态(读取)、管理(全部)。
全局用户应该有权限访问:报告(只读)、状态(读取)、控制面板(全部)。
内部用户应该有权限访问:报告(全部)、状态(读取)。
我尝试使用ability.rs中的以下代码来实现此功能。
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role? :admin
can :manage, [Report, Admin]
can :read, State
elsif user.role? :global_user
can :read, [Report, State]
can :manage, Cpanel
elsif user.role? :internal_user
can :manage, Report
can :read, State
end
end
end
目前,这个控制器中只有索引操作。当我使用内部用户登录应用程序时,我可以访问例如/admin的页面,这不是我想要的行为。我希望限制对所有控制器的访问,而不是ability.rb类中列出的控制器。