Ich bin neu bei CakePHP und ich habe ihre Dokumentation gelesen und ich befolge ihre einfache Authentifizierung Beispiel. Ich habe auch weit und breit (einschließlich Antworten auf dieser Seite) nach einer Antwort auf mein Problem gesucht.
Ich benutze CakePHP 2.0 und meine Userscontroller-Login-Funktion sieht wie folgt aus:
function login() {
if ($this->request->is('post')) {
if ($this->Auth->login(/*$this->request->data*/)) {
$this->redirect($this->Auth->redirect());
}else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
Mein AppController sieht wie folgt aus:
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'pages', 'action' => 'display'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'display')
)
);
public function beforeFilter() {
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
}
Mein Benutzer Modell:
class User extends AppModel {
public $name = "User";
}
Und das Login-Formular:
Das Problem ist, dass ein Benutzer nicht angemeldet wird. Wenn $ this-> Auth-> login() ohne $ this-> request-> data als Parameter aufgerufen wird, wird nichts in die Session geschrieben Die Seite wird nur aktualisiert. Wenn Sie jedoch die $ this-> request-> -Daten angeben, werden die Anmeldeinformationen in die Sitzung geschrieben und ich werde korrekt umgeleitet. Allerdings habe ich festgestellt, dass man sich mit $ this-> Auth-> einloggen ($ this-> request-> data) einloggen kann, auch wenn diese nicht in der Datenbank vorhanden sind. Außerdem passiert nichts, wenn ich falsche Anmeldedaten eingegeben habe. Es werden keine Flash-Nachrichten angezeigt.
Ich versuche nicht, etwas besonderes zu tun, alles was ich will, ist die Möglichkeit, einen Benutzer einzuloggen. Ich habe eine einfache Benutzer Tabelle mit Benutzernamen und Passwort Felder und ich habe ihr Beispiel gefolgt und lesen Sie ihre Dokumentation, aber immer noch nichts, was ich versucht habe, hat funktioniert.
Ich entschuldige mich, wenn ich nicht alle Informationen zur Verfügung gestellt habe, um eine Antwort zu geben. Jede Hilfe wird sehr geschätzt.
vorsichtig: Sie müssen Login() um jeden Preis leer lassen. Wenn Sie $ this-> request-> data eingeben, wird dieser Benutzer unabhängig von dem Benutzernamen und dem Passwort angemeldet. Dies beeinträchtigt Ihre Anmeldung. Versuchen Sie zu debuggen, was das Hash-Kennwort bei der Suche ist, und vergleichen Sie es mit der aktuellen Hash-Zeichenfolge in der Datenbank. Wahrscheinlich stimmen sie nicht überein! – mark