0

Doctrine で Symfony 1.4 を使用しています。

ばかげた質問で申し訳ありませんが、"remember me" 機能を動作させるために sfDoctrineGuardPlugin の上に何を構築する必要がありますか?

ユーザーをログインすると、sfRemember Cookie がデフォルトの 15 日間の有効期間で作成され、記憶キーがプラグインの sf_guard_remember_key テーブルに保存されます。

プラグインを微調整しなくても、sfGuardSecurityUser SignIn() メソッドは Cookie を作成しますが、Signout() メソッドはそれを消去し、ログインしていない限り Cookie を残しません!

Signin():
sfContext::getInstance()->getResponse()->setCookie($remember_cookie, $key, time() + $expiration_age);

Signout():
sfContext::getInstance()->getResponse()->setCookie($remember_cookie, '', time() - $expiration_age);

データベーステーブルが sf_guard_user のリレーションとして Cookie を保存していることがわかりますが、Cookie がなくなってしまうとあまり良くありません....

ここで何が欠けているのか誰かが教えてくれたらありがたいです.Signout()メソッドがCookieを削除できないようにする場合、自分でCookieを読み取るコードを書く必要がありますか、それともこれはどこかで自動化されていますか/何とかして?ボックス標準の Symfony 1.4 と sfDoctrineGuardPlugin がインストールされています。

それはすべて完全に間違っているようで、これに関するドキュメントは存在しません。

どんな助けでもいただければ幸いです。

4

1 に答える 1

2

ユーザーがログアウトした後も Cookie を保存しておく必要があるのはなぜですか?

唯一の目的は、ユーザーの現在のセッションがタイムアウトした後でも、ユーザーをログイン状態に保つことです。したがって、Cookie です。つまり、ユーザーがブラウザーを閉じると (そしてセッション Cookie が削除されると)、次にサイトにアクセスしたときに、記憶 Cookie で自動的にログインされます。

しかし、彼がログアウトした場合は、完全にログアウトしたいので、記憶 Cookie をクリアする必要があります。

于 2010-04-28T23:51:53.720 に答える