繁体   English   中英

在Rails中使用cancancan进行属性级别授权

[英]Attribute level authorization using cancancan in rails

我正在使用cancan进行授权。 我有不同的管理员角色,我想根据他们的角色(admin,mega_admin)向他们显示特定的列。 基本上我想做这样的事情。

index do
 selectable_column
 column :first_column if can? :read_first_column #visible to mega_admin only
 column :second_column if can? :read_second_column
 actions
end

由于cancancan不提供属性级别授权,我该怎么办?

您将必须定义一个能力 ,然后对其进行检查

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new
    if user.mega_admin? // here 
      can :mega_manage, :all
    else if user.admin?
      can :manage, :all
    else
      can :read, :all
    end
  end
end

您可以尝试版本3.0( https://github.com/CanCanCommunity/cancancan/tree/feature/3.0.0 )和属性级别权限功能( https://github.com/CanCanCommunity/cancancan/tree/feature/ 3.0.0#version-30 )。

请注意,目前尚未发布,因此您必须从github中添加它:

gem 'cancancan', github: 'CanCanCommunity/cancancan', branch: 'feature/3.0.0'

使用版本3时,您可以定义:

can :read, ModelClass, :first_columnn
can :read, ModelClass, :second_columnn

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM