0

我正在使用带有 sfGuardDoctrinePlugin 的 Symfony 1.4。问题是:

  • 假设当前页面 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 回答