2016-08-22 3 views
0

Я использую CakePHP 3.2.11 на сервере Cloud 9 IDE.Cakephp 3 - Аутентификация не может уничтожить

  1. Когда я вышел из своего приложения через компонент Auth. Я не входил в систему снова, но я попытался получить доступ к некоторым страницам. Он был появился Auth запроса сеанса входа в системе, как: (я не проектировал его)

enter image description here

набирает имя пользователя & пароля в моей таблице пользователей в базе данных. Он был зарегистрирован.

  1. Теперь, когда я попытался выйти из системы, уничтожьте все сеансы; мое приложение по-прежнему записывало сеанс, в который я входил, как указано выше. Я использую debug для проверки:

    debug ($ this-> request-> session() -> read ('Auth'));

Здесь мой выход из системы()

public function logout() 
    { 
     $this->request->session()->destroy(); 
     return $this->redirect($this->Auth->logout()); 
    } 

My AppController.php с компонентом конфигурации Auth

$this->loadComponent('Auth', [ 
      'authenticate' => array(
       'Form' => array(
        // 'fields' => array('username' => 'email'), 
        'scope' => array('is_delete' => '0') 
       ) 
      ), 
      'loginAction' => [ 
       'controller' => 'MUsers', 
       'action' => 'login'    
      ], 
      'authorize' => ['Controller'], 
      'loginRedirect' => [ 
       'controller' => 'Pages', 
       'action' => 'dashboard' 
      ], 
      'logoutRedirect' => [ 
       'controller' => 'MUsers', 
       'action' => 'login' 
      ], 
      'storage' => 'Session', 
      'authError' => 'Woopsie, you are not authorized to access this area.', 
      'flash' => [ 
       'params' => [ 
        'class' => 'alert alert-danger alert-dismissible text-c', 
          ] 
         ] 

Теперь я не могу удалить эту сессию с помощью кода, я просто не могу удалить его ясно кеш браузера. Итак, мои вопросы:

Как решить эту проблему с помощью кода или настроить параметры моего приложения?

UPDATE

на основе @Kamlesh Гупта ответил, он редактировал свой код, и это нормально.

$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') 
       ) 
      ), 
      'loginAction' => [ 
       'controller' => 'MUsers', 
       'action' => 'login'    
      ], 
      'authorize' => ['Controller'], 
      'loginRedirect' => [ 
       'controller' => 'Pages', 
       'action' => 'dashboard' 
      ], 
      'logoutRedirect' => [ 
       'controller' => 'MUsers', 
       'action' => 'login' 
      ], 
      'storage' => 'Session', 
      'authError' => 'Woopsie, you are not authorized to access this area.', 
      'flash' => [ 
       'params' => [ 
        'class' => 'alert alert-danger alert-dismissible text-c', 
          ] 
         ] 

ответ

2
For login authentication, 

Use below code in appController.php 

$this->loadComponent('Auth', [ 
      'authenticate' => [ 
       'Form' => [ 
        'userModel' => 'Users', 
        'fields' => array(
         'username' => 'email', 
         'password' => 'password' 
        ), 
       ], 
      ], 
      'logoutRedirect' => [ 
        'controller' => 'users', 
        'action' => 'login' 
       ], 
      'loginAction' => [ 
       'controller' => 'Users', 
       'action' => 'login' 
      ], 
      'unauthorizedRedirect' => false, 
      'storage' => 'Session' 
     ]); 

**for destroying session** 
public function logout() 
{ 
    $this->Auth->logout(); 
} 

Этот код работает для меня. Я использую в своем приложении.

Вы также можете попробовать просто изменить название модели и имя поля, действие

+1

Вы потрясающий, спасибо. – TommyDo

Смежные вопросы