CanCan 入門

CanCan 是 Ruby on Rails 的流行授權庫,它限制使用者訪問特定資源。最新的寶石(CanCanCan)是死亡專案 CanCan 的延續。

許可權在 Ability 類中定義,可以從控制器,檢視,幫助程式或程式碼中的任何其他位置使用。

要嚮應用新增授權支援,請將 CanCanCan gem 新增到 Gemfile

gem 'cancancan'

然後定義能力類:

# app/models/ability.rb
class Ability
  include CanCan::Ability

  def initialize(user)
  end
end

然後使用 load_and_authorize_resource 檢查授權,將授權模型載入到控制器中:

class ArticlesController < ApplicationController
  load_and_authorize_resource

  def show
    # @article is already loaded and authorized
  end
end

authorize! 檢查授權或提出異常

def show
  @article = Article.find(params[:id])
  authorize! :read, @article
end

can? 用於檢查物件是否被授權針對控制器,檢視或幫助器中的任何位置的特定操作

<% if can? :update, @article %>
  <%= link_to "Edit", edit_article_path(@article) %>
<% end %>

注意: 這假定簽名使用者由 current_user 方法提供。