1

(RESTful にしようとして) Cookie を使用しない Web サービスを作成しています。私の認証スキームは次のとおりです。

  • ユーザーPOSTのユーザー名とハッシュ化されたパスワード (HTTPS 経由) を/sessions.
  • /sessions応答本文の一部としてセッション ID で応答します。
  • ?session_id=[session_id]ユーザーは、URLに追加することにより、以降のすべての要求を認証します。

これを実装するときは、セッション ID を作成し、それをどこかに (ファイルまたはデータベース) に保存してから、セッション ID を応答本文の一部として手動で挿入したいと考えています。

PHP の既存のセッション関数は、既に多くのこと (ID の生成とファイルの保存) を行っていますが、これらの部分のみを使用し、セッション ID を Cookie としてユーザーに送信しないようにする方法がわかりません。

これは可能ですか?または、独自のセッション ID 生成機能 (ヒントはありますか?) とファイル/データベース ストレージを実装する必要がありますか?

4

1 に答える 1

2

セッション Cookie の ini 設定を無効にすることができます。

ini_set('session.use_cookies', '0');
session_id($your_session_token);
session_start();

例:

認証 API - .../sessions/

...
check username/password ... other things
...
ini_set('session.use_cookies', '0');
session_start();
$_SESSION['user_stuff'] = $stuff;
$_SESSION['other_things'] = $things;

...
print session_id() along with whatever else is needed in the response body

実際のサービス - .../some_other_service_url/?session_id=[session_id]

ini_set('session.use_cookies', '0');
session_id($_GET['session_id']);//I'm not sure where PHP will look for it by default and I'm too lazy to check, so I'm making sure its $_GET['session_id']
session_start();
if(!$_SESSION['user_stuff']) {
    session token is missing, invalid or expired. the client needs to reauthenticate
}

do some useful things
于 2013-11-12T20:43:50.420 に答える