我正在使用身份验证组件,它工作正常。但是在内容之前的默认布局中,如果用户登录,我有一些不同的菜单。所以我想确定用户是否登录 - 通常我使用 $this->Auth->user('id')但是 $this->Auth 在布局中不起作用(它仅适用于查看哪个控制器正在使用 Auth 组件)。
怎么做?
我正在使用身份验证组件,它工作正常。但是在内容之前的默认布局中,如果用户登录,我有一些不同的菜单。所以我想确定用户是否登录 - 通常我使用 $this->Auth->user('id')但是 $this->Auth 在布局中不起作用(它仅适用于查看哪个控制器正在使用 Auth 组件)。
怎么做?
在 beforeRender() 中只需调用
$this->set('userData', $this->Auth->user());
并将数据设置到视图并在视图中进行检查。
为了在布局中获取数据,您应该调用beforeRender()
AppController 中的方法。
恕我直言,通过会话传递它不是一个好主意。这可能不是通常的情况,但至少我更喜欢做一些可靠的事情:如果您使用会话,那么您的代码将在不使用会话的系统中失败(无状态身份验证)。总的来说,我根本不喜欢在视图中访问会话。会话对我来说更像是一个数据源。
您可以从会话中读取 Auth 数据。就像是:
$user = $session->read('Auth');
不要忘记在 AppController 中添加会话助手。
var $helpers = array('Session');