2017-06-20 2 views
0

Dans mon contrôleur app i définie commelogoutRedirect() ne fonctionne pas dans CakePHP

class AppController extends Controller { 

    public $components = array(
     // 'DebugKit.Toolbar', 
     'Session', 
     'Auth' => array(
      'loginRedirect' => array('controller' => 'admin_logins', 'action' => 'dashboard'), 
      'logoutRedirect' => array('controller' => 'admin_logins', 'action' => 'index'), 
      'authError' => 'You must be logged in to view this page.', 
      'loginError' => 'Invalid Username or Password entered, please try again.', 
      'authenticate' => array('Form' => array('fields' => array('username' => 'email', 'password' => 'password')) 
      ) 

    )); 
.......... 
?> 

Si expiration de la session au lieu de rediriger en admin_logins/index il redirige vers users/login,

I imprimé url logoutRedirect intérieur beforeFilter() dans l'application contrôleur comme ci-dessous

// only allow the login controllers only 
    public function beforeFilter() { 
     $this->Auth->authorize = 'Controller'; 
     $this->Auth->allow('index'); 
     pr($this->Auth->logoutRedirect); die; 
} 

Il imprime comme ci-dessous

Array 
(
    [controller] => admin_logins 
    [action] => index 
) 

Mais encore, il redirige vers users/login Quelqu'un peut-il suggérer ici?

Répondre

0

C'est mon erreur. J'ai manqué de définir le loginAction dans mon AppController. Après avoir modifié mon $components, cela fonctionne très bien.

public $components = array(
     // 'DebugKit.Toolbar', 
     'Session', 
     'Auth' => array(
      'loginRedirect' => array('controller' => 'admin_logins', 'action' => 'dashboard'), 
      'loginAction'=>array('controller'=>'admin_logins', 'action'=>'index'), 
      'logoutRedirect' => array('controller' => 'admin_logins', 'action' => 'index'), 
      'authError' => 'You must be logged in to view this page.', 
      'loginError' => 'Invalid Username or Password entered, please try again.', 
      'authenticate' => array('Form' => array('fields' => array('username' => 'email', 'password' => 'password')) 
      ) 

    ));