使用 cakephp 检查控制器中的用户身份验证


Checking user auth in controllers with cakephp

我正在为 cakephp 编写博客/用户身份验证教程,并尝试添加一些功能来掌握窍门。我现在在身份验证的这个页面上http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html

我尝试仅在用户登录时才显示注销链接

,仅在用户注销时显示登录链接。我正在尝试遵循这篇文章中的建议 CakePHP 检查用户是否在视图中登录,但我有点困惑。

编辑- 为了确保我的身份验证器被正确找到,我只是在那里放了一个回声"测试"语句。链接工作正常,但是,当我删除 echo 语句时,链接只会显示登录名,即使我已登录。我无法弄清楚为什么当我在我的元素中回显某些内容时,链接才能正常工作。

所以,在我的帖子/索引页面上,我有以下内容

<?php
if($this->element('authuser') == TRUE){   
?>
    <p><?php echo $this->Html->link('Log In', array('controller'=>'users','action' => 'login')); ?></p>
<?
}
   else{ 
?>
    <p><?php echo $this->Html->link('Log Out', array('controller'=>'users','action' => 'logout')); ?></p>
<?
}
?> 

我的元素authuser.ctp包含

<?
 $authuser = AuthComponent::user();
if($authuser){
  RETURN TRUE;
}
 echo "test"; //when this is commented out the link on posts/index only displays login
?>

您始终可以通过调用静态方法在视图中获取当前登录的用户

$authUser = AuthComponent::user();

这样,您可以在任何地方获得当前登录的用户,而不是从操作中传递它。

无论如何,我建议您将此逻辑添加到元素中并重用它。