2011-06-19 107 views
2

我正在開發一個使用Rails 3的API。我已經完成了自己的身份驗證邏輯,並且使用了名爲authenticate_user的before_filter!檢查用戶是否已登錄。Before_filter身份驗證功能

在此函數中,我檢查當前用戶會話是否處於活動狀態。如果我什麼都不做,但是如果沒有活動會話,我想停止使用其他功能/資源,然後將錯誤返回給用戶未登錄的調用應用程序。

我的問題是:

  1. 如何在我的身份驗證功能中「停止」請求,如果沒有當前會話。我不想重定向用戶,只顯示錯誤消息。

  2. 如何顯示將被髮送回調用應用程序的錯誤消息?如果我能用JSON「回答」(如果可能的話)是最好的。

這是我現在的代碼。

def authenticate_user! 

     unless current_user 

      if params[:token] 

       user = User.authenticate_token(params[:token]) 

       if user 

        session[:user_id] = user.id 

       else 

        SEND BACK SOMETHING HERE AND STOP THE PROCESS? 

       end 

      end 

     end 

    end 

感謝所有輸入!

回答

2

我也想知道這個問題的答案。

在我來說,我做了上述else子句中的以下內容:

else 
     redirect_to :root, :status => 401 
     return false 
    end 

這將返回一個401沒有授權和重定向到根和停止過濾