2012-07-20 66 views
0

在我的意見,我有一個鏈接可以刪除如下行動:制定返回401未授權的刪除操作

<%= 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 

當我點擊「刪除」鏈接時,顯示「你確定嗎?」彈出,點擊確定進入設計頁面。如果當前用戶以「admin」身份登錄,我需要啓用刪除操作。我做錯了什麼?

+0

在日誌消息中,當您在彈出的警告中點擊確定時,有一些關於CSRF令牌的信息? – MurifoX 2012-07-20 12:02:04

+0

它顯示爲「警告:無法驗證CSRF令牌真實性」 – Raji 2012-07-20 12:21:52

回答

0

事情是。除了應用程序中的GET之外的所有HTTP方法都必須向服務器發送CSRF真實性標記。
避免此問題的一種方法是進入application_controller.rb並註釋行protect_from_forgery。這只是使其正常工作的一種方式,因爲不建議在沒有CSRF檢查的情況下離開您的應用。
稍後,您可以找到一種方法,在不使用表單的情況下不檢查鏈接和自定義操作上的CSRF標記。

+0

想知道爲什麼沒有upvote,這是正確的答案。 – Isaiah 2013-04-04 21:45:51

+0

不,不是。它不回答這個問題。你只是刪除了導致你的問題的應用程序的一部分,你沒有解決問題。另外,取消CSRF檢查通常不是一個好主意。 – 2015-05-26 11:42:26