2010-12-31 3 views
6

로그인하는 동안 사용자의 계정이 활성화되어 있는지 확인하고 싶습니다. 그러나 케이크의 인증 컴포넌트는 제어 방법을 알지 못하는 방식으로 로그인을 처리합니다. Cake는 기본적으로 빈 로그인 기능을 사용하며 User.active의 값을 확인하는 방법을 모른다. 사전에cakephp 커스텀 로그인 조건

감사

답변

11

AuthComponent에는 $ userScope라고하는 추가 조건을 설정할 수있는 속성이 있습니다.

$this->Auth->userScope = array('User.active' => true); 

참고 : 위의 케이크 1.x에서 적용

은 그냥으로, beforeFilter() 인증 설정 블록에서이 줄을 포함 2.x에서의 사용을 위해 :

$this->Auth->scope = array('User.active' =>true); 

그런 다음 당신은 당신의 로그인 방법을 비워 둘 수 및 방문자를 인증 할 때 AuthComponent이 추가 조건을 추가합니다.

당신은 여기에 모든 추가 속성을 볼 수 http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers

이 여분의 범위를 포함하지 않는 경우, 비활성 사용자는 여전히 로그인 할 수 있습니다 당신이 그들을 로그 아웃해야 할 것이다 당신의 확인 후 login() 메소드.

0
사용자 컨트롤러에서

, 또는 당신은 그것을 배치 (로그인 폼 링크에 액션) 원하는 목적지 :

function login() { 
    if ($this->Session->read('Auth.User')) { 
     $active = $this->Auth->user('active'); 
     if ($active) { 
      //(do stuff) 
     } 
     else { 
      //(do other stuff) 
     } 
    } 
} 

이는 "활성"가 있다고 가정을 true 또는 false (또는 1 또는 0) 중 하나가 포함 된 사용자 테이블의 열 $ this-> Auth-> user()를 사용하면 현재 로그인 한 사용자의 데이터에 액세스 할 수 있습니다. 여기에 더 많은 정보가 있습니다 : http://book.cakephp.org/view/1264/user

+0

답장을 보내 주셔서 감사합니다.하지만 어떻게 든 나에게 도움이되지 못했고, 어쨌든 사용자가 로그인하지 않은 상태에서 로그인하지 못하게하는 아이디어가 마음에 들지 않습니다. 어쨌든 고마워.) – Elwhis

관련 문제