ich habe ein Problem und komme damit nicht wirklich weiter. Ich habe für meine kleine Webanwendung mit der Auth-Klasse einen Login realisiert. Dieser klappt auch wunderbar. Ich habe jedoch folgendes Problem (dazu muss ich etwas ausholen):
- Die Webseite liegt auf einem lokalen Webserver (192.168.178.20) und dort im Ordner support.
- Sobald ich im Browser 192.168.178.20/support aufrufe und keine Session aktiv ist, wird der Benutzer auf 192.168.178.20/support/login weitergeleitet.
- Dort gibt der Benutzer dann seine Login-Daten ein und loggt sich ein. Beim ersten Login wird die Startseite aufgerufen und ein authError ausgelöst und das obwohl der Benutzer angemeldet werden konnte. Loggt der Benutzer sich aus wird er direkt wieder auf die Login-Seite geleitet. Meldet er sich dann erneut an funktioniert der Login ohne Fehler. Der Login funktioniert auch problemlos, wenn der Benutzer direkt die Login-Seite (192.168.178.20/support) aufruft. Das Problem besteht also nur, wenn die Webanwendung über 192.168.178.20/support aufgerufen wird.
Hier mal mein Code meiner login und logout-action
- Code: Alles auswählen
- App::uses('AppController', 'Controller');
class UsersController extends AppController {
public function beforeFilter() {
parent::beforeFilter();
}
public function login(){
//Setze anderes Layout
$this->layout = 'login';
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->User->id = $this->Auth->user('id');
$this->User->saveField('lastlogin', date("Y-m-d H:i:s"));
$this->redirect($this->Auth->redirect());
} else {
//Passwort-Feld leeren und Fehler ausgeben
$this->request->data['User']['password'] = "";
$this->Session->setFlash('Benutername und/oder Passwort falsch');
}
}
}
public function logout(){
$this->Session->setFlash('Sie wurden erfolgreich ausgeloggt', 'default', array('class' => 'success'));
$this->redirect($this->Auth->logout());
}
Und hier der Code meiner AppController-Klasse, in der ich die AuthComponent eingebunden habe:
- Code: Alles auswählen
- class AppController extends Controller {
public $components = array('Session', 'Auth');
public function beforeFilter(){
$this->Auth->loginAction = array('controller'=>'users', 'action'=>'login');
$this->Auth->loginRedirect = array('controller'=>'institutes', 'action'=>'index');
$this->Auth->logoutRedirect = array('controller'=>'users', 'action'=>'login');
$this->Auth->authorize = array('Controller');
$this->Auth->authError = "Ihre Benutzerrechte sind nicht ausreichend um diese Operation durchzuführen";
$this->Session->write('User.id', $this->Auth->user('id'));
$this->Session->write('User.group', $this->Auth->user('group'));
}
Habt ihr irgendeine Tipp für mich um den Fehler zu finden? Kann ich irgendwie sehen, warum oder wo der authError ausgelöst wurde? Ich bin mit meinem Latein am Ende
Danke für Eure Hilfe