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
方法提供。