【问题标题】:Checking user auth in controllers with cakephp使用 cakephp 检查控制器中的用户身份验证
【发布时间】:2012-05-26 17:55:21
【问题描述】:

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

我试图仅在用户登录时显示注销链接,仅在用户注销时显示登录链接。我正在尝试遵循这篇帖子 CakePHP check if user is logged in inside a view 的建议,但我有点困惑。

edit- 为了确保正确找到我的 authuser,我只是在其中放了一个 echo "test" 语句。链接工作正常,但是,当我删除 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
?>

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    你总是可以通过调用静态方法来获取当前登录用户的视图

    $authUser = AuthComponent::user();
    

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

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

    【讨论】:

    • 谢谢,这太简单了!
    • 我似乎无法让元素 100% 工作。我对某些事情有点困惑,我更新了上面的代码。
    • 你用错了。元素返回呈现的 html/字符串,所以 element() 返回的是“测试”
    • 我让它工作了,但不确定我是否正确使用它。我回显 $authUser = AuthComponent::user();然后在 if 语句中调用该元素。
    猜你喜欢
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2017-06-05
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多