问题描述
我们有一个使用 CakePHP authentication 2 的简单 CakePHP 4 开发,它几乎可以正常工作......
使用 AuthenticationComponent 我们可以在每个控制器中使用 $this->Authentication->getIdentity() 访问登录用户;
因此我们编写了有效的行为并将字符串添加到每个添加/编辑...
但是我们如何在 Models Behavior 中访问 AuthenticationComponent 呢?我没找到方法...
解决方法
获取用户数据到行为的解决方案
EventManager::instance()->on(
'Model.beforeSave',['priority' => -1],function (Event $event,EntityInterface $entity,\ArrayObject $options) {
// retrieve the user id from the auth component
if(!empty($this->Authentication->getIdentity())){
$options['user_id'] = $this->Authentication->getIdentity()->get('longname');
}
}
);