设计返回401 Unauthorized以执行删除操作

时间:2012-07-20 11:19:14

标签: ruby-on-rails-3 devise

在我的观看中,我有一个删除操作的链接,如下所示:

<%= link_to 'Destroy', powersaving, :method => :delete, :data => { :confirm => 'Are you sure?' } %>

在我的控制器中,我有before_filter

before_filter :authenticate_user!, :only => [:index, :show, :show_details, :destroy]

我也尝试过这样:

before_filter :authenticate_user!, :except => [:new, :create]

删除操作

def destroy
    if current_user.admin?
      @powersaving = Powersaving.find(params[:id]) 
      @powersaving.destroy  
    end

    respond_to do |format|
      format.html { redirect_to powersavings_url }
      format.json { head :no_content }
    end
  end

当我点击&#34;删除&#34;链接显示&#34;你确定吗?&#34;弹出,单击确定转到Devise的sign_in页面。如果当前用户以&#34; admin&#34;登录,则需要提供删除操作。我做错了什么?

2 个答案:

答案 0 :(得分:0)

添加

Schematic

到您的<%= csrf_meta_tag %>

答案 1 :(得分:-1)

事情是这样的。应用程序中除GET之外的所有HTTP方法都必须向服务器发送真实性的CSRF令牌 避免此问题的一种方法是进入application_controller.rb并对protect_from_forgery行进行评论。这只是让它现在正常工作的一种方法,因为不建议在没有CSRF检查的情况下离开您的应用程序 稍后,您可以找到一种方法,不检查链接上的CSRF令牌和没有表单的自定义操作。