0

Symfony 1.4 と sfGuardDoctrinePlugin を使用しています。問題は:

  • 現在のページ URL が www.pg.com/blog/edit.php だとしましょう
  • ここでセッションがタイムアウトになり、ブログのインデックス リンクをクリックします
  • これは www.pg.com/blog にリダイレクトされますが、ログインする必要があるため、login_module と login_action のテンプレートは同じ URL (www.pg.com/blog) で提供されます。
  • ログイン後、ユーザーはブログ インデックスに移動し (またはユーザーがそのリンクをクリックしても)、「ブログ/インデックス」用にキャッシュされるため、ログイン テンプレートが提供されます。

sfAuth プラグインのどこかに、他のページ URL でログイン テンプレートを提供しているリダイレクトではなく転送があると思われます。どうすればこれを防ぐことができますか?

編集:発生している行も取得しましたが、Symfony のソース コードを変更したくありません。外でもできる?

Jul 31 10:02:59 symfony [info] {sfBasicSecurityFilter} Action "blog/index" requires authentication, forwarding to "sfGuardAuth/signin"

これを回避するには、ユーザーはかなりの時間待機するか、キャッシュをクリアする必要があります。ありがとう

4

1 に答える 1

1

転送はsfBasicSecurityFilterフィルターによって行われます。転送をリダイレクトに変更する場合はforwardToLoginAction、独自のセキュリティ フィルターで上書きする必要があります。

class mySecurityFilter extends sfBasicSecurityFilter
{

   protected function forwardToLoginAction()
   {
       $this->getContext()->getController()->redirect(sfConfig::get('sf_login_module') . '/' . sfConfig::get('sf_login_action'));
       throw new sfStopException();
   }
 }
于 2012-07-31T06:55:21.980 に答える