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