我用 Devise 和 CanCan 成功地制作了登录系统,我有 3 种类型的用户。管理员、内部和全球用户。我创建了控制器和索引操作:Admin、Cpanel、Report 和 State,并且我想限制某些用户对该控制器的访问。
管理员用户应具有访问权限:报告(全部)、状态(读取)、管理员(全部)
全局用户应具有访问权限:Reports(只读)、State(读取)、Cpanel(全部)
内部用户应具有访问权限:报告(全部)、状态(读取)
我尝试使用 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 类中列出的控制器。