2016-08-22 4 views
0

Cloud 9 IDE 서버에서 Cakephp 3.2.11을 사용합니다.Cakephp 3 - Auth 세션이 파괴 할 수 없습니다.

  1. 인증 컴포넌트를 통해 내 앱에 로그 아웃했을 때. 다시 로그인하지는 않았지만 일부 페이지에 액세스하려고했습니다. 이 인증 세션 로그인 요청 등이 출연했다 : (나는 그것을 디자인하지 않았다)

enter image description here

나는 데이터베이스에 내 사용자 테이블에 사용자 이름 & 암호를 입력합니다. LOGGED IN이었습니다.

  1. 이제 로그 아웃을 시도하면 모든 세션이 삭제됩니다. 내 앱은 여전히 ​​위와 같이 로그인 한 세션을 기록했습니다. 디버그를 사용하여 다음을 확인합니다.

    디버그 ($ this-> request-> session() -> read ('Auth'))); 여기

내 로그 아웃()

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

내가 코드를 사용하여 해당 세션을 삭제할 수 없습니다 이제

$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', 
          ] 
         ] 

인증 구성 요소의 설정과 내 AppController.php, 나는 단지 명확하여 삭제할 수 있습니다 브라우저 캐시. 따라서 내 질문은 다음과 같습니다.

코드를 사용하여이 문제를 해결하거나 내 앱 설정을 어떻게 구성 할 수 있습니까? @Kamlesh 굽타을 바탕으로

UPDATE는 대답이 내 코드를 편집하고 괜찮아요.

$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