1

Ruby-on-Rails で API システムを設計しており、クエリをログに記録してユーザーを認証できるようにしたいと考えています。

ただし、私は従来のログイン システムを持っていません。ユーザーが要求の HTTP ヘッダーで送信できる APIkey と署名を使用したいと考えています。(Amazonのサービスの仕組みに似ています)

リクエストする代わりに、ヘッダーをリクエストして送信し、署名でリクエストを検証/users/12345/photos/createできるようにしたいと考えています。/photos/createX-APIKey: 12345

それを行うために適応できるgemはありますか? またはさらに良いことに、適応なしでこれを行う宝石はありますか?

それとも、POST/GET 変数を使用して各リクエストで API キーを送信するだけの方が賢明だと思いますか?

4

1 に答える 1

1

おそらく、すでに認証ライブラリを使用しています。おそらく、認証をチェックする方法をオーバーライドする方法があります。ほとんどの場合、メソッドの名前はauthenticated?です。ただし、使用しているライブラリのドキュメントを参照してください。

私は既存の宝石を探すことはなかったでしょうが、それを自分で実装しました。そうすることはそれほど難しいことではありません。ボイラープレートの実装例は次のとおりです。

class ApplicationController < ActionController::Base
  def authenticated?
    current_user.is_a?(User)
  end

  def current_user
    user_from_session || user_from_api_key
  end

  def user_from_session
    # ... use session[:user] or whatever.
  end

  def user_from_api_key
    User.find_by_api_key(request.headers["X-APIKey"])
  end
end

現在の認証設定については何も言わないので、これは私が得ることができる限り具体的です。

于 2010-05-22T22:14:01.427 に答える