2012-01-10 34 views
7

私はセッションに大いに依存しているPHPアプリケーションを持っています。現在、ユーザー向けにAPIを構築することを検討しています。私たちの最初の考えは、ユーザーは電子メールアドレス、パスワード、APIキー(各ユーザーに固有のAPI)を使ってAPIに対して認証する必要があるということです。PHP APIの認証とセッション

しかし、現在のアプリケーション(モデルを含む)はユーザーセッションに大いに依存しているため、最良のアプローチについてはわかりません。 API要求が正しく認証されると仮定すると

、それは許容できるだろうに。

  • スタート、ユーザが
  • 実行モデルを認証されたユーザにJSON/XMLを返すされると、APIコールのセッション
  • は、このセッションは、各API呼び出しのためにインスタンス化した後、すぐにフラッシュされることを意味セッション

を殺します。これでいい?あるいは、他の選択肢を検討する必要がありますか?

+0

正しいですが、APIはステートレスであり、可能であればセッション/クッキーは使用しないでください。しかし、それは簡単に問題はない。ただし、既存の認証フレームワークを再利用する必要があります。なぜなら、それは本当に複雑な作業だからです。たとえば、フレームワークにとらわれずデータベースに依存しないhttps://github.com/delight-im/PHP-Authを見てください。その後、要求ごとに資格情報を送信し、サーバー(1)でログインし、(2)実際の作業を行い、最後に再度ログアウトします。 – caw

答えて

1

APIを作成した経験から、1つのリクエストに対してセッションが最後になり、各実行サイクルでセッション情報が再作成されることが最も効果的です。

セッションのインスタンス化が重要な場合は、明らかにオーバーヘッドが発生しますが、データベースとの資格情報を確認するだけであれば問題ありません。さらに、セッションではなくユーザ識別子に基づいてAPCやmemcacheのようなものを大量にキャッシュすることができるはずです。セッションを再作成するのに必要な作業を減らしながら、各リクエストで認証を確認する必要があります。

関連する問題