【问题标题】:before_filter rendering or redirect. Not calling create method after.before_filter 渲染或重定向。之后不调用 create 方法。
【发布时间】:2014-05-25 02:34:33
【问题描述】:

我正在调用 before_filter 以通过 auth_token 验证我的 API,然后用户才能创建友谊。我遇到的问题是 before_filter 被成功调用并且它正在成功地验证用户但是在运行 before_filter 之后它没有继续并调用 create 方法。

这是我 POST 到创建 url 时返回的内容。

Filter chain halted as :require_auth rendered or redirected 

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

类 FriendshipsController

  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 的应用程序控制器:require_auth

  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

任何想法出了什么问题?谢谢。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您的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
    

    如果您需要整个 API,如果没有将 require_auth 置于 ApplicationController 中的受保护方法下并使用 FriendshipsController 中的 before_filter 调用它,也可以将 before_filter 移动到应用程序控制器中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      相关资源
      最近更新 更多