Ruby on Rails 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已加载并授权
  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方法提供了已签名的用户。