2017-04-13 2 views
0

Ich habe ein Login-Problem. Die neue Benutzerregistrierung funktioniert, das Passwort ist verschlüsselt, aber ich kann mich nicht anmelden. Meine Login-Aktion ist im UsersAcces-Plugin und ich denke, das ist ein Problem. Was ist los mit dir?CakePHP 3.4.3 Logging funktioniert nicht im Plugin

Config Auth in src/AppController:

$this->loadComponent('Auth', [ 
     'loginAction' => [ 
      'controller' => 'Users', 
      'action' => 'login', 
      'plugin' => 'UsersAcces' 
     ], 
     'loginRedirect' => [ 
      'plugin' => 'UsersAcces', 
      'controller' => 'Users', 
      'action' => 'index' 
     ], 
     'logoutRedirect' => [ 
      'controller' => 'Users', 
      'action' => 'login', 
      'plugin' => 'UsersAcces' 
     ], 
     'authError' => 'Brak dostępu!', 
     'authenticate' => [ 
      'Form' => [ 
       'fields' => ['username' => 'username','password'=>'password'], 
       'userModel'=>'UsersAcces.Users', 
       'relatedModel' => ['UsersAcces.Roles', 'UsersAcces.Addresses', 'UsersAcces.Emails', 'UsersAcces.Permissions', 'UsersAcces.Telephones'],//'UsersAcces.Roles', 
       'finder' => 'auth' 
      ] 
     ], 
     'storage' => 'Session', 
     'autoRedirect' => false 
    ]); 

Aktion Anmeldung i plugins/UsersAcces/src/Controller/Benutzer:

public function login(){ 
    $this->viewBuilder()->setLayout("login"); 


    if ($this->request->is('post')) { 
     $user = $this->Auth->identify(); 
     if ($user) { 
      return $this->redirect($this->Auth->redirectUrl()); 
     }else{ 
      $this->Flash->error(__('Niewłaściwy login lub hasło. Spróbuj ponownie.')); 
     } 
    } 
    //$user = $this->Users->newEntity(); 
    $this->set(compact("user")); 

} 

Funktion findAuth in plugins/UsersAcces/src/Model/Tabelle UsersTable /:

public function findAuth(\Cake\ORM\Query $query, array $options) 
{ 
    $query 
     ->select() 
     ->where(['Users._delete' => 0]); 
    return $query; 
} 

Funktion setPassword in plugins/UsersAcces/src/Modell/Entity/User:

protected function _setPassword($password) 
{ 
    if (strlen($password) > 0) { 
     return (new DefaultPasswordHasher)->hash($password); 
    } 
} 

Bitte helfen Sie.

Antwort

1

Ich fand eine Lösung! Ich habe keine Zeile zur Datei "plugins/UsersAcces/src/Controller/Users" hinzugefügt:

$this->Auth->setUser($user); 
0

Sie benötigen das Passwort Hasher unter der 'Form' Schlüssel in der Auth Komponente Initialisierung params, wie hinzuzufügen:

'authenticate' => array( 'Form' => array( 'passwordHasher' => 'Default' ) ),

+0

Leider funktioniert das nicht ... – wojtek6000

Verwandte Themen