Kann nicht get-Auth-login für die Arbeit mit CakePHP 2.0
Ich versuche, ein einfaches login-Formular, um die Arbeit mit CakePHP 2.0... nur Auth, keine ACLs für jetzt.
Ich bin in der Lage, um zu sehen, die form und geben Sie die E-Mail und Passwort, wie Sie in der Datenbank, aber ich bekomme nur zurückgegeben, um die form und die flash-Fehlermeldung wird angezeigt. Hier ist mein code:
AppController:
class AppController extends Controller
{
function beforeFilter()
{
$this->Auth->userModel = 'Users';
$this->Auth->fields = array('username' => 'email', 'password' => 'password'); //have to put both, even if we're just changing one
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'hotels', 'action' => 'dashboard');
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
}
}
login.ctp:
<?php
echo $this->Form->create('User', array('action' => 'login'));
echo $this->Form->input('email');
echo $this->Form->input('password');
echo $this->Form->end('Login');
?>
UsersController:
class UsersController extends AppController
{
var $name = 'Users';
var $helpers = array('Html','Form');
var $components = array('Auth','Session');
function beforeFilter()
{
$this->Auth->allow("logout");
parent::beforeFilter();
}
function index() { } //Redirects to login()
function login()
{
if ($this->Auth->login())
{
$this->redirect($this->Auth->redirect());
} else
{
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
function logout()
{
$this->redirect($this->Auth->logout());
}
}
?>
Ich Schätze jede Hilfe mit diesem. Danke!
- Haben Sie jemals eine einfache Auth login zu arbeiten? Ich möchte eine Arbeit CakePHP 2.x einfache system funktioniert. Ihre code-snippets sind sehr viel präziser als das Cakebook-Dokumentation.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den "Ungültiger Benutzername oder ungültiges Passwort, versuchen Sie es erneut" Fehler wird angezeigt, nachdem Sie die Treffer login?
Gibt es ein paar Dinge sollten Sie prüfen:
• Ist die Ausgabe von
$this->Auth->login()
identisch mit den Informationen in Ihrer Datenbank? Setzendebug($this->Auth->login())
um die Ausgabe in Ihrem login-Methode auf, nachdem die form übermittelt wird.• Sind die Passwörter korrekt gehasht in der Datenbank?
• Versuchen Sie, die
AuthComponent
zur Verfügung, um alle Ihre Controller nicht nur dieUsersController
.• Nicht sicher, ob dies einen Unterschied macht, aber nennen
parent::beforeFilter();
vor allem in den controllerbeforeFilter
Methode.EDIT:
Ist zu sehen, dass Sie versuchen, zu validieren, basierend auf E-Mail und Passwort. Als Standard AuthComponent erwartet einen Benutzernamen und ein Passwort. Sie müssen explizit angeben, dass Sie möchten, dass die E-Mail und Passwort werden überprüft, indem
$this->Auth->login()
. Das kommt von dem 2.0 Dokumentation:Die Tatsache, dass Sie nicht sehen, jede SQL-output ist zu erwarten, glaube ich.
Außerdem müssen Sie prüfen, ob Ihr Feld "Passwort" in der Datenbank auf VARCHAR 50.
Passiert es mir, dass ich abschneiden das gehashte Passwort in der DB und Auth nie passiert.
wenn Sie nicht mit defalut "Benutzername", "Kennwort" "auth", die Sie cant get login
beispielsweise verwenden Sie "E-Mail"
sollten Sie Komponente Bearbeiten Erklärung die in Ihrem controller mit Ihren login-Funktion:
Becareful mit cakephp, den Konventionen. Sollten Sie dies ändern ", $this->Auth->userModel = 'Benutzer';" auf "$this->Auth->userModel = 'Benutzer';", da Benutzer ohne plural ist die Modell-Konvention in Kuchen. Das hat für mich und auch becareful mit den Großbuchstaben. fast fährt mich verrückt. Viel Glück.
Bearbeitung der component-Deklaration in AppController hat den trick für mich. Wenn Sie die Felder mit den Namen als "username" und "Passwort" sollten Sie immer angeben. In Ihrem Fall wäre es
Es ist ein Fehler in der cakephp-tutorial.
$dies->Auth->login() sollte geändert werden
$dies->Auth->login($this->Anfrage->data)