2016-03-22 21 views
0

Manchmal, wenn ich lange genug ohne Aktion bleibe, oder wenn ich versuche, direkt auf eine bestimmte Seite zuzugreifen, wird ein "Authentifizierung erforderlich" Popup angezeigt und nach meinem Login und Passwort gefragt.CakePHP3.x: Authentifizierung erforderlich popup

Aber selbst wenn ich in die erforderlichen Felder ausfüllen, wird die Authentifizierung nicht durchgeführt und die Refresh-Anzeige nur „Unauthorized.

Es scheint, diese Pop-up ruft nicht die Anmeldungsverfahren.

Können Sie sagen, mir, wie die Anmeldeinformationen sollen mein User-Login-Controller?

Grüße transmited werden,

EDIT Anmeldungsformular

<div class="container-fluid"> 
    <br/> 
    <div class="container-fluid col-md-4 col-md-offset-4"> 
    <h1>Se connecter</h1> 

     <div class="row"> 
      <div class="col-md-12"> 
       <?= $this->FormB->create(); ?> 
        <div class="panel panel-default"> 
         <div class="panel-heading"> 
          <h2><?= __("Saisissez vos identifiants") ?></h2> 
         </div> 
         <div class="panel-body"> 

          <?= $this->FormB->input('username', ['label' => __("Nom d'utilisateur :"), 'placeholder' => __("Nom d'utilisateur")]); ?> 

          <?= $this->FormB->input('password', ['label' => __("Mot de passe :"), 'placeholder' => __("Mot de passe")]); ?> 

          <p><em><?= $this->Html->link(__("Mot de passe oublié ?"), ['action' => 'forgotPassword']); ?></em></p> 

          <br/> 

          <?php if ($activeLink == 1): ?> 

          <p><em><?= $this->Html->link(__("Renvoyer l'email d'activation ?"), ['controller' => 'Users', 'action' => 'resend', 'username' => $username]); ?></em></p> 

          <br/> 

          <?php endif ?>    
         </div> 
        </div> 
        <div> 
         <?= $this->Form->button(isset($btnlabel) ? __("$btnlabel") : __("Enregistrer"), ["class" => "btn btn-primary btn-block"]) ?> 
        </div> 
       <?= $this->FormB->end() ?>   
      </div> 
     </div> 
    </div> 
</div> 

** EDIT ** Wenn ich mein Login/Passwort in dem vom Browser geöffnet Popup eingeben, Kuchen erzeugt der folgende Fehler

2016-03-24 16:53:11 Error: [Cake\Network\Exception\UnauthorizedException] Unauthorized 
Request URL: /pros/Owners/account 
Stack Trace: 
#0 /home/MyApp/vendor/cakephp/cakephp/src/Controller/Component/AuthComponent.php(359): Cake\Auth\BasicAuthenticate->unauthenticated(Object(Cake\Network\Request), Object(Cake\Network\Response)) 
#1 /home/MyApp/vendor/cakephp/cakephp/src/Controller/Component/AuthComponent.php(296): Cake\Controller\Component\AuthComponent->_unauthenticated(Object(App\Controller\Pros\OwnersController)) 
#2 /home/MyApp/vendor/cakephp/cakephp/src/Controller/Component/AuthComponent.php(258): Cake\Controller\Component\AuthComponent->authCheck(Object(Cake\Event\Event)) 
#3 /home/MyApp/vendor/cakephp/cakephp/src/Event/EventManager.php(385): Cake\Controller\Component\AuthComponent->startup(Object(Cake\Event\Event)) 
#4 /home/MyApp/vendor/cakephp/cakephp/src/Event/EventManager.php(355): Cake\Event\EventManager->_callListener(Array, Object(Cake\Event\Event)) 
#5 /home/MyApp/vendor/cakephp/cakephp/src/Event/EventDispatcherTrait.php(78): Cake\Event\EventManager->dispatch(Object(Cake\Event\Event)) 
#6 /home/MyApp/vendor/cakephp/cakephp/src/Controller/Controller.php(495): Cake\Controller\Controller->dispatchEvent('Controller.star...') 
#7 /home/MyApp/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(109): Cake\Controller\Controller->startupProcess() 
#8 /home/MyApp/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(87): Cake\Routing\Dispatcher->_invoke(Object(App\Controller\Pros\OwnersController)) 
#9 /home/MyApp/webroot/index.php(37): Cake\Routing\Dispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response)) 
#10 {main} 

Wie soll ich diesen Authentifizierungsversuch abzufangen?

+0

könnten Sie bitte das Login-Formular posten – dav

+0

@dav Hallo Dav, es ist fertig. – 2ndGAB

+0

Wenn Ihre Vermutung richtig ist und es nicht zur richtigen Aktion führt, können Sie versuchen, dieses '$ this-> FormB-> create ('Benutzer', array ('url' => '/ users/your_login_action'))' - Daher geben Sie die genaue URL, um das Formular – dav

Antwort

0

Ich habe völlig das gleiche Problem wie Post. Ich wurde als Hilfe von jemandem betrachtet und ich habe dieses Problem behoben.

Meine Config Auth Komponente vor:

$this->loadComponent('Auth', [ 
      'authenticate' => array(
       'Form' => array(
        // 'fields' => array('username' => 'email'), 
        'scope' => array('is_delete' => '0') 
       ) 
      ), 

und nachdem ich es bearbeitet, es war perfekt laufen.

$this->loadComponent('Auth', [ 
      'authenticate' => array(
       'Form' => array(
       'userModel' => 'MUsers', //Add this line 
       'fields' => array('username' => 'username', 
            'password' => 'password'), //Edited this line 
        'scope' => array('is_delete' => '0') 
       ) 
      ), 

Wenn jemand bitte an meinen Beitrag zu beheben wissen wollen überprüfen:

Cakephp 3 - Auth session cannot destroy

1

Das Problem wird durch eine Änderung verursacht wurde ich in AppController aus API-Anforderung zu authentifizieren:
Normalerweise , sollten Sie laden Auth Komponente wie folgt:

$this->loadComponent('Auth', [ 
     'authorize' => ['Controller'], 
     'authenticate' => [ 
      'Form' => [ 
       'scope' => ['Users.active' => 1] 
      ], 
     ], 
     'loginRedirect' => [ 
      'controller' => 'Users', 
      'action' => 'account' 
     ], 
     'logoutRedirect' => [ 
      'controller' => 'Index', 
      'action' => 'index' 
     ] 
    ]); 

Auf diese Weise authentifizieren Sie Ihre Anmeldedaten in einem Formular. Eine andere Möglichkeit ist die Basic Authentifizierung zu verwenden. Es ist weniger benutzt, aber es kann so implementiert werden.

Dadurch wird das Login-Popup angezeigt, wenn Sie versuchen, auf eine Webseite zuzugreifen.

Ich weiß nicht, ob beide Form und Basic Laden Authentifizierung wirklich Sinn macht, aber es ist, was ich tat ersten und es ist, weil ich manchmal das Popup angezeigt sah, vor allem, wenn die Sitzung nach Form authentifiziert abgelaufen. Wenn Sie einen normal Authentifizierungsmechanismus für Ihre Website benötigen, laden Sie die Auth Komponente mit Form in Ihre AppController.php Wenn Sie einen Authentifizierungsmechanismus basic für API-Zugriff benötigen, empfehle ich, eine ApiController.php zu erstellen, wo Sie Auth Komponente mit Basic wie oben angegeben laden. Dann wird Ihr API-Controller ApiController anstelle von AppController erweitern.

Das kann ich aus meinem Wissen sagen. CakePHP Guru könnte mehr Infos hinzufügen oder mich korrigieren wenn nötig.

Verwandte Themen