0

Ich habe CakePHP 3 App erstellt, die eine Login-Funktion hat. Login-Funktion funktioniert perfekt auf meinem lokalen Rechner. Wenn jedoch auf dem Produktionsserver die Anmeldedaten korrekt sind, leitet er mich zu "\" und nicht zu der von mir angegebenen URL um. Ich glaube, es ist ein Problem der Sitzung. Ich meine aus irgendeinem Grund ist die Sitzung an der Weiterleitung verloren.

Der Code:

Initilaize Methode der AppController

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

    $this->loadComponent('RequestHandler'); 
    $this->loadComponent('Flash'); 
    $this->loadComponent('Auth',[ 
      'authenticate'=>[ 
        'Form'=>[ 
          'fields'=>[ 
            'username'=>'username', 
            'password'=>'password' 
          ], 
          'finder' => 'auth', 
        ] 
      ], 
      'loginAction'=>[ 
        'controller'=>'Users', 
        'action'=>'login' 
      ], 
      'loginRedirect' => [ 
        'controller'=> 'Pages', 
        'action'=> 'dashboard' 
      ], 
    ]); 
} 

UserController.php:

class UsersController extends AppController { 


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

public function login() { 
    if ($this->request->is('post')) { 
     $user=$this->Auth->identify();  
     if($user) { 
      $this->Auth->setUser($user); 
      return $this->redirect($this->Auth->redirectUrl()); 
     } else { 
      $this->Flash->error(_('your username or password is incorrect, please try agian'), [ 
       'key' => 'falseSignIn']); 
     } 
    } 
} 
public function logout() { 
    return $this->redirect($this->Auth->logout()); 
} 

}

Hier ist meine Session-Info mit phpinfo(); enter image description here

+0

Können Sie mir die Initialisierungsfunktion des App-Controllers zeigen, wo Sie loginredirect definiert haben. – Aparna

+0

Ich habe in der Hauptfrage hinzugefügt. Bitte schau es dir an – Tanan

Antwort

0

Die URL zurückgegeben wird gemäß folgenden Regeln:

1.Returns die normalisierte URL von Sitzung Auth.redirect Wert, wenn es vorhanden ist und für die gleiche Domain läuft die aktuelle App eingeschaltet ist.

2.Wenn es keinen Sitzungswert gibt und eine Config loginRedirect vorhanden ist, wird der Wert loginRedirect zurückgegeben.

3.Wenn es keine Sitzung und keine loginRedirect gibt, wird/zurückgegeben.

Versuchen Sie diesen Code:

public function initialize() 
{ 
    parent::initialize(); 
    $this->loadComponent('Auth', [ 
    'loginAction' => [ 
     'controller' => 'Users', 
     'action' => 'login', 
     'plugin' => 'Users' 
    ], 
    'authError' => 'Did you really think you are allowed to see that?', 
    'authenticate' => [ 
     'Form' => [ 
      'fields' => [ 'username'=>'username', 
          'password'=>'password'] 
     ] 
    ], 
    'storage' => 'Session' 
    ]); 
} 

Sie können auch die einfache Art und Weise nutzen:

$this->redirect(['action' => 'dashboard']); 
0

Sie brauchen eine versteckte Textbox erstellen und den Wert von $ this- zuweisen> Auth-> redirectUrl() zu ihm. Dann können Sie den Textfeld-Wert aus Ihrem Formular abrufen und als Argument an $ this-> redirect() übergeben.