2015-09-21 163 views
0

stackoverflowers。我只是滿足的問題,雖然我添加的登錄功能,以我的CakePHP的網站,可以添加帳戶,但用戶不能登錄系統CakePHP登錄問題

的AppController:

namespace App\Controller; 

    use Cake\Controller\Controller; 

    class AppController extends Controller 
    { 
     public function initialize() 
     { 
      $this->loadComponent('Flash'); 
      $this->loadComponent('Auth', [ 
       'authenticate' => [ 
        'Form' => [ 
         'fields' => [ 
          'username' => 'email', 
          'password' => 'password' 
         ] 
        ] 
       ], 
       'loginAction' => [ 
        'controller' => 'Users', 
        'action' => 'login' 
       ] 
      ]); 

      // Allow the display action so our pages controller 
      // continues to work. 
      $this->Auth->allow(['display']); 
     } 

Userscontroller:

<?php 
namespace App\Controller; 

use App\Controller\AppController; 

/** 
* Users Controller 
* 
* @property \App\Model\Table\UsersTable $Users */ 
class UsersController extends AppController 
{ 

    /** 
    * Index method 
    * 
    * @return void 
    */ 
    public function index() 
    { 
     $this->set('users', $this->paginate($this->Users)); 
     $this->set('_serialize', ['users']); 
    } 

    /** 
    * View method 
    * 
    * @param string|null $id User id. 
    * @return void 
    * @throws \Cake\Network\Exception\NotFoundException When record not found. 
    */ 
    public function view($id = null) 
    { 
     $user = $this->Users->get($id, [ 
      'contain' => ['BacklogOrders', 'Orders'] 
     ]); 
     $this->set('user', $user); 
     $this->set('_serialize', ['user']); 
    } 

    /** 
    * Add method 
    * 
    * @return void Redirects on successful add, renders view otherwise. 
    */ 
    public function add() 
    { 
     $user = $this->Users->newEntity(); 
     if ($this->request->is('post')) { 
      $user = $this->Users->patchEntity($user, $this->request->data); 
      if ($this->Users->save($user)) { 
       $this->Flash->success(__('The user has been saved.')); 
       return $this->redirect(['action' => 'index']); 
      } else { 
       $this->Flash->error(__('The user could not be saved. Please, try again.')); 
      } 
     } 
     $this->set(compact('user')); 
     $this->set('_serialize', ['user']); 
    } 

    /** 
    * Edit method 
    * 
    * @param string|null $id User id. 
    * @return void Redirects on successful edit, renders view otherwise. 
    * @throws \Cake\Network\Exception\NotFoundException When record not found. 
    */ 
    public function edit($id = null) 
    { 
     $user = $this->Users->get($id, [ 
      'contain' => [] 
     ]); 
     if ($this->request->is(['patch', 'post', 'put'])) { 
      $user = $this->Users->patchEntity($user, $this->request->data); 
      if ($this->Users->save($user)) { 
       $this->Flash->success(__('The user has been saved.')); 
       return $this->redirect(['action' => 'index']); 
      } else { 
       $this->Flash->error(__('The user could not be saved. Please, try again.')); 
      } 
     } 
     $this->set(compact('user')); 
     $this->set('_serialize', ['user']); 
    } 

    /** 
    * Delete method 
    * 
    * @param string|null $id User id. 
    * @return void Redirects to index. 
    * @throws \Cake\Network\Exception\NotFoundException When record not found. 
    */ 
    public function delete($id = null) 
    { 
     $this->request->allowMethod(['post', 'delete']); 
     $user = $this->Users->get($id); 
     if ($this->Users->delete($user)) { 
      $this->Flash->success(__('The user has been deleted.')); 
     } else { 
      $this->Flash->error(__('The user could not be deleted. Please, try again.')); 
     } 
     return $this->redirect(['action' => 'index']); 
    } 
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('Your username or password is incorrect.'); 
    } 
} 
    public function beforeFilter(\Cake\Event\Event $event) 
{ 
    $this->Auth->allow(['add']); 
} 
} 

phpMyAdmin的表: 3列: ID 電子郵件 密碼

密碼散列已被使用。

謝謝!

回答

0

'Auth'組件在AppController中配置。需要配置的屬性是'authenticate','loginAction','loginRedirect'和'logoutRedirect'。類似於

'loginRedirect' => [ 
     'controller' => 'Pages', 
     'action' => 'display', 
     'pass[0]' => 'user_home', 
    ], 
    'logoutRedirect' => [ 
     'controller' => 'Users', 
     'action' => 'login', 
    ], 

'loginRedirect'是用戶在登錄時登陸的頁面。 'logoutRedirect'是登錄後用戶將登陸的頁面。

+0

謝謝,我剛剛發現這是數據庫問題。 –