8

私はかなり標準的な認証方法を持っています

  private

  def authenticate_user
    @current_user = User.find_by_authentication_token(params[:token])
    unless @current_user
      error = { :error => "Invalid token." }
      respond_with(error, :status => 401 )
    end
  end

認証が失敗することを確認するためにAPIを呼び出しています。

エラーが発生しました

ArgumentError (Nil location provided. Can't build URI.):
  app/controllers/api/v1/base_controller.rb:13:in `authenticate_user'

私は何が間違っているのですか?

4

2 に答える 2

8

エラーの特定のフレーバーから、「authenticate_user」は「create」アクションの一部として呼び出されていると思います。

もしそうなら、私がここで提供した答えがあなたにも役立つと信じています。

ただし、これが認証されたセッションの作成の一部であり、新しく作成された「リソース」の実際の場所がないと仮定すると、次のように、応答の場所にnilを指定します。

...
respond_with(error, :status => 401, :location => nil)
...

リンクされた答えを見ると、それはより理にかなっています。それでも意味がわからない場合は、喜んで明確にします。

于 2011-11-15T12:36:38.673 に答える
0

レンダリングするようにrespond_withを変更しましたが、機能しました。

render json: { success: false, message: "an error" }, status: 500
于 2013-09-10T18:30:46.847 に答える