0

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 を作成するのを止める方法はありますか?

4

1 に答える 1

0

auth.redirect が機能しない理由について、問題を特定しました。

core.php でカスタム セッション Cookie 名を設定しましたが、何らかの理由でセッション コンポーネントがカスタム Cookie 名で動作せず、すべてのページで新しいセッションが作成されます。

セッションで問題が発生し、カスタム セッション Cookie 名を使用している場合は、それをデフォルトにリセットすると機能します。

これをバグとして CakePHP に提出します。

補足事項

が原因で問題が発生していることを確認しました。これなしで、Cookie名に. カスタム Cookie 名は正常に機能します。

于 2012-05-30T19:24:53.950 に答える