Before_filter渲染或重定向.之后没有调用create方法



在用户创建友谊之前,我调用before_filter通过auth_token对我的API进行身份验证。我所遇到的问题是before_filter被成功调用,它是成功地对用户进行身份验证,但是在运行before_filter之后,它没有继续并调用create方法。

这是当我POST到create url时返回的结果。

Filter chain halted as :require_auth rendered or redirected 

这是我的友情控制器创建方法:

classfriendshipscontroller <程序控制器>

  before_filter :require_auth
  def create
    friendID = params[:friend_id]
    userID = currently_logged_in.id
    unless userID == friendID or Friendship.exists?(userID, friendID)
      transaction do
        create(:user_id => userID, :friend_id => friendID, :status => 'pending')
        create(:user_id => friendID, :friend_id => userID, :status => 'requested')
      end
    end
  end

下面是before_filter运行的应用控制器:

  def require_auth
    auth_token = request.headers["HTTP_AUTH_TOKEN"]
    @user = User.find_by_auth_token(auth_token)
    if @user.auth_token
      render :status => 200, :json => {:message => "Authorization accepted"}
    else
      render :status => 401, :json => {:error => "Requires authorization"}
      return false
    end
  end

你知道怎么回事吗?谢谢。

您的require_auth是您的问题,将其更改为以下内容(正如您可以在railscasts剧集http://railscasts.com/episodes/352-securing-an-api):中看到的那样)

def require_auth
   authenticate_or_request_with_http_token do |token, options|
     user = User.find_by_auth_token(token)
   end
end

还移动before_filter到应用程序控制器,如果你需要整个API,如果不把require_authApplicationController的保护方法下,并从FriendshipsController调用它

最新更新