2016-01-19 53 views
0

如果用户在登录表单上输入他们的凭据,我可以登录用户。如果我尝试手动登录,我无法登录用户。真的很奇怪。CakePHP 3 - 无法手动登录用户

代码登录使用表单[这工作得很好]:

public function login() { 
     if ($this->request->is('post')) { 
      $user = $this->Auth->identify(); 
      if ($user) { 
       $this->Auth->setUser($user); 
       return $this->redirect('/cars'); 
      } 
      $this->Flash->error(__('Invalid username or password, try again')); 
     } 
    } 

代码手动登录[这并不工作]:

public function loginManually() 
    { 
     try { 
      $user = $this->Users->find() 
      ->where(['username' => '[email protected]']) 
      ->contain(['Profiles']) 
      ->firstOrFail(); 
      $this->Auth->setUser($user->toArray()); 
      return $this->redirect('/cars'); 
     } catch (\Exception $ex) { 
      Log::write('error', $ex); 
      $this->Flash->error(__('An error occurred Please try again')); 
     } 
     return $this->redirect('/login'); 
    } 

在调试 - 代码工作罚款高达$this-Auth->setUser($user->toArray()); - 但是当我将它重定向到/cars时,系统返回一个错误,指出用户没有登录。我很困惑 - 任何帮助表示赞赏。

回答

0

而不是电子邮件通过主键(id)获取用户记录。 这是我的工作

$user = $this->Modelname->get($id); 
$this->Auth->setUser($user->toArray()); 
debug($this->Auth->user());