Cakephp ドキュメントの認証チュートリアルに従い、機能するログイン システムを作成しました。
私がやろうとしているのは、ログインが完了した後、ログインしていないときに最初にアクセスしようとしていたアクションにユーザーをリダイレクトすることです。
彼らが訪問していたページは、セッション内で Auth コンポーネントのスタートアップ関数によって Auth.redirect に書き込まれるはずですが、これは機能していないようです。
ユーザーコントローラーで、次を beforefilter に追加しました。
$this->Auth->allow('add', 'login');
したがって、編集アクションにアクセスしようとすると、自動的にログイン アクションにリダイレクトされます。
ログインアクションには、次のものを含めました。
debug($this->Session->read());
debug($this->referer());
これはセッション情報を出力しています。このセッションでは Auth.redirect について言及されていないため、Auth 関数も私自身もこれを使用してユーザーをリダイレクトすることはできません。
$this->referer を使用してみましたが、何らかの理由で、auth 関数によって自動的にリダイレクトされるときに、リファラーも追跡されません。
auth.redirect が書き込まれない理由と、認証機能によってリダイレクトされたときに $this->referer が入力されない理由を知っている人はいますか?
私は、WAMP を使用する Windows マシンを使用していることに注意する必要があります。ただし、私の追加アクションは、成功後にログインにリダイレクトされ、debug($this->referer()); これが発生したときにリダイレクト URL を取得するため、ヘッダーが正常に機能している必要があります。
その他の注記:
データベースに保存されているセッションを調べて、CakePHP の問題を特定しました。
auth.redirect はセッションに保存されているようですが、何らかの理由で、ユーザーがリダイレクトされて以前のデータがクリアされると、新しいセッションが生成されます。
CakePHP がユーザーの新しいセッション ID を作成するのを止める方法はありますか?