cakePhp 3.4授权

时间:2017-09-19 10:06:26

标签: cakephp cakephp-3.4 role-base-authorization

我试图保存视图以便计算。它仅在经过身份验证的用户访问此页面时保存记录。当未经身份验证的用户访问此功能时保存失败。

 use Cake\ORM\TableRegistry;
    use Cake\Event\Event;

      public function beforeFilter(Event $event)
            {
                    $this->Auth->allow(['view']);
            }
       public function view($photoId = null)
        {
            $photoViewsTable = TableRegistry::get('PhotoViews');
            $photoViews = $photoViewsTable->newEntity();
            $photoViews->ip_address = $_SERVER['REMOTE_ADDR'];
            $photoViews->photo_id = $photoId;
            $photoViews->user_id = ($this->request->session()->read('Auth.User.id')) ? $this->request->session()->read('Auth.User.id') : 0;
            $photoViews->ip_address = $_SERVER['REMOTE_ADDR'];
            $photoViewsTable->save($photoViews);
    }

1 个答案:

答案 0 :(得分:0)

我认为这是因为模型中的验证规则 PhotoViews 。 检查表用户是否存在user_id验证。

在此行中将0更改为null

$photoViews->user_id = ($this->request->session()->read('Auth.User.id')) ? $this->request->session()->read('Auth.User.id') : null;

请务必检查模型中allowEmpty的验证,并在数据库表中检查null。

您可以通过获取此类验证错误来调试它。

if(!$photoViewsTable->save($photoViews)){
    debug($photoViewsTable->getErrors());
}

使用登录进行检查,无需登录。

希望这会有所帮助。