5

以前にこの投稿を読みました: 一般に、管理者と Web アプリを 2 つのエンティティに分割する

基本的には、API 側と Web フロント側を 1 つの cakephp アプリにまとめることができます。ただし、ご存じのとおり、REST はステートレスであり、クライアントが Cookie などを保持することを期待する理由はありません。CakePHPでsession_start関数がいつトリガーされるか知っていますか? API エンドポイントに到達したときに、session_start の実行を避けたいと思っています。ただし、通常の Web フロントがヒットしたときにセッションを開始する必要があります。

4

2 に答える 2

1

Cake v2+ の場合、一般的に次のことは行わないでください。

  • CakeSession を呼び出す
  • セッション コンポーネントをロードするか、セッション ヘルパーを使用する
  • $this->session->flash() をレイアウトから削除
  • 認証コンポーネントを使用しないでください

まだセッションを開始している場合 (応答ヘッダーで Cookie を取得することで確認できます)、誰がセッションを開始しているかを簡単に追跡できます。メソッドlib/Cake/Model/Datasource/CakeSession.phpに次の行を追加するだけです。start()

public static function start() {
  debug_print_backtrace();
  exit();
  ...
}

リクエストを行うと、犯人が誰であるかのコールスタックが表示されます:)

于 2013-01-22T17:16:11.710 に答える
0

session_start()でトリガーされCORE\Cake\Model\Datasource\CakeSession.phpます。session_start()をトリガーしたくない場合は、コントローラーにセッションコンポーネントまたはヘルパーを含めないようにしてください。また、セッションを呼び出したり、Authコンポーネントを使用したりしないでください。場合によっては、自動的にトリガーsession_start()されることもあります。

于 2013-01-17T08:09:09.970 に答える