Symfony1 Symfony 1.4 ghost用户-当前用户更改为不同的用户

Symfony1 Symfony 1.4 ghost用户-当前用户更改为不同的用户,symfony1,symfony-1.4,sfguard,Symfony1,Symfony 1.4,Sfguard,我有以下代码来显示我的应用程序中当前登录的用户。奇怪的是,当用户从一个页面浏览到另一个页面时,偶尔会出现间歇性的情况,登录用户的用户名会更改为数据库中的另一个用户。注销和重新登录,然后显示当前用户名 <? if ($sf_user->isAuthenticated()){?> <div id="welcome"> You are signed in as <strong><?php echo sfContext::getInstance

我有以下代码来显示我的应用程序中当前登录的用户。奇怪的是,当用户从一个页面浏览到另一个页面时,偶尔会出现间歇性的情况,登录用户的用户名会更改为数据库中的另一个用户。注销和重新登录,然后显示当前用户名

 <? if ($sf_user->isAuthenticated()){?>
  <div id="welcome">
   You are signed in as <strong><?php echo sfContext::getInstance()->getUser()->
   getGuardUser()->getName()?></strong> <a href="/logout" class="button">Logout</a>
  </div>
  <div class="clear"></div>
 <? } ?>

您以
知道是什么引起的吗


我可以确认两个用户是在同一天登录的,但登录位置不同。

在视图中使用
$sf\u user

比如:


您以

感谢您的回复,使用$sf_user是否会阻止问题的发生,如果是,原因是什么?sfContext是整个应用程序对象,sfUser(视图中的$sf_用户)将被引用到当前用户会话。@Wilq必须阅读:如果这个答案解决了您的问题,别忘了。使用
$sf_user
是最佳做法,但为什么要解决问题?查看
sfContext
类,您可以看到
filterTemplateParameters
函数从
$this->factories['user']
获取
$sf\u user
参数,与
getUser
函数完全相同。
<? if ($sf_user->isAuthenticated()){?>
       <div id="welcome">
              You are signed in as <strong><?php echo $sf_user->getName()?></strong> <a href="/logout" class="button">Logout</a>
        </div>
        <div class="clear"></div>
<? } ?>