簡體   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