2015-12-18 83 views
1

起初,我非常感謝這個偉大的社區,我從中學到了很多東西。你是最棒的。 :)cakephp 3.x默認身份驗證不起作用

現在我有麻煩的身份驗證。我有一個簡單的用戶登錄,我總是得到一個錯誤信息的用戶名或密碼是錯誤的。 我不知道爲什麼。 :(

I'm附近工作的CakePHP的3.x的 所以這裏的官方教程是我對AppController的代碼:

public function initialize() 
    { 
     parent::initialize(); 

     $this->loadComponent('RequestHandler'); 
     $this->loadComponent('Flash'); 
     $this->loadComponent('Auth', [ 
      'authenticate' => [ 
       'Form' => [ 
        'fields' => [ 
         'username' => 'mail', 
         'password' => 'password' 
        ] 
       ] 
      ], 
      'loginAction' => [ 
       'controller' => 'Users', 
       'action' => 'login' 
      ] 
     ]); 

     $this->Auth->allow(['display']); 
    } 

這是UsersController代碼:

public function login(){ 

     if($this->request->is('post')){ 

      $user = $this->Auth->identify(); 
      if($user){ 
       $this->Auth->setUser($user); 
       return $this->redirect($this->Auth->redirectUrl()); 
      } 
      $this->Flash->error('Name or Password is wrong');    
     }    
    } 

這裏是我的user.php的(實體)中的代碼:

protected function _setPassword($value){ 

     $hasher = new DefaultPasswordHasher(); 
     return $hasher->hash($value); 
} 

的d that's我認爲這個:

<h1>Login</h1> 
<?= $this->Form->create() ?> 
<?= $this->Form->input('email') ?> 
<?= $this->Form->input('password') ?> 
<?= $this->Form->button('Login') ?> 
<?= $this->Form->end() ?> 

It's我第一次來這裏I'm張貼和我是第一次使用CakePHP 3.0,所以請幫助我。 :)

請原諒我更糟的英語。 ^^

回答

1

在您的AppController中,您將用戶名設置爲「mail」,並在您的視圖中將輸入名稱稱爲「email」。

在AppController和您的視圖中設置相同的用戶名字段用於登錄。

例如如果你的數據庫中的列名是「電子郵件」,您的驗證組件應該是這樣的:

$this->loadComponent('Auth', [ 
    'authenticate' => [ 
     'Form' => [ 
      'fields' => [ 
       'username' => 'email', 
       'password' => 'password' 
      ] 
     ] 
    ], 
    'loginAction' => [ 
     'controller' => 'Users', 
     'action' => 'login' 
    ] 
]); 

而且您的登錄視圖應該完全像一個你。

+0

我很盲目。/doh謝謝soooo了! – Leyla