Прежде всего, я не думаю, что в этом коде что-то не так,
<?php if($sf_user->isAuthenticated()): ?>
<?php echo link_to('Logout', '/logout') ?>
<?php else: ?>
<?php echo link_to('Login', '/login') ?>
<?php endif; ?>
Я обычно использую что-то вроде:
<div id="left_section">
<!-- This section is devoted to user context op -->
<?php if(!$sf_user->isAuthenticated()):?>
<div id="log_form">
<?php echo include_partial('user/login',array('form' => new sfGuardFormSignin()))?>
</div>
Dont have an account yet?
<?php echo link_to('Register now!','user/new')?>
<?php else:?>
<div id="user_info">
<?php echo include_partial('user/info')?>
</div>
<?php endif?>
</div>
Я думаю, что кнопка «Назад» в браузере - неприятность для веб-разработчиков, поэтому, если это то, что вы говорите о «кнопке« Назад », это совершенно не одобряет». Попробуйте перенаправить пользователя, когда он вошел на страницу входа, или используйте слот для отображения сообщения приветствия / формы входа в систему, чтобы вы всегда видели, что он / она видит. Кроме того, перенаправление заставит сервер снова отрендерить все и обеспечит полноту информации о сеансе.
О методе получения идентификатора пользователя, он должен выглядеть примерно так, предположим, что вы находитесь в действии:
$this->getUser()->getGuardUser()->getId()
и это должно сделать.