2011-03-13 79 views
0

我有问题检查用户是否从UsersController以外的任何控制器登录。从auth组件检索用户信息

我正在尝试创建用户个人资料页面。我将它路由到PagesController,并且当我使用

$this->Auth->user() 

它总是返回空值。但是,如果我将它路由到UsersController它工作正常。这是为什么?登录似乎工作正常。

回答

0

这是因为您只在用户的控制器中包含Auth组件。您应该将其包含在AppController和beforeFilter()中。这样你就可以访问所有的控制器。

+0

不,这不是那个。它包含在AppController中,如果我试图在不包含的情况下访问它,它会抛出错误。 – 2011-03-13 22:16:39

1

你app_controller.php:

class AppController extends Controller { 

    var $components = array('Auth', 'Session', 'Cookie'); 

    function beforeFilter() { 
     $this->Auth->authError = 'blabla'; 
     $this->Auth->loginError = 'blabla'; 
    } 

} 

在你的控制器:

function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Auth->allow('function1', 'function2', 'function3'); //etc 
    $this->Auth->autoRedirect = true; 
} 
+0

什么是autoRedirect for?否则它基本上是我做的。除了我没有添加cookies,不知道它是否重要 – 2011-03-13 22:19:39

+0

autoRedirect:在用户登录页面后重定向用户 – 2011-03-13 22:30:25