2013-05-07 3 views
1

에 오류 메시지를 바인딩하면 인증 구성 요소의 범위 조건에 인증 오류 메시지가 결합 할 수있는 방법이 있습니까? 예를 들어 의 CakePHP 인증 : 범위 조건

내가 가진 말 :

범위 조건이 실패하면 나는 오류를 설정 좋아할
'Auth' => array('authenticate' => array('Blowfish' => array('scope' => array('User.activated' => 1)))); 

. 나는 사용자/패스가 잘못되었을 때 나타나는 오류와 구별 할 수 있어야합니다.

이것이 가능합니까?

+0

당신이 수동으로'$ this-> Auth-> 로그인 ($ this-> 요청 -> 데이터 [ '사용자'])을 사용하여 사용자를 로그인 할 때 어떻게되는지하는 것을 시도했다;'. 보기가 렌더링되기 전에 가로 챌 수있는 리턴 오브젝트 또는 예외가있을 수 있습니다. –

+0

이 메서드는 불행히도 부울을 반환합니다. – BIOS

답변

4

오른쪽, 내가 CakePHP의 소스 코드 주위에 뿌리를 했어 내가 범위 조건을 사용하는 경우는 공상 아무것도하지 않는 결론에 도달했습니다, 단순히 그들에게 추가적인 쿼리 조건을 추가합니다. 사용자 이름/비밀번호 조합 및 범위 조건과 일치하는 사용자를 찾거나 그렇지 않은 사용자를 찾습니다.

한 가지 가능한 솔루션은 수동과 같이 활성화 된 필드의 사용자를 기록하고 확인하는 것입니다 : 당신이 인증 요소를 구성하는 범위 조건을 지정하지 않아야 명확히해야

public function login() 
{ 
    if ($this->request->is('post')) { 
     if ($this->Auth->login($this->data['User'])) { 
      // check activated field 
      if ($this->Auth->user('activated') == 1) { 
       // user is activated 
       $this->redirect(...); 
      } else { 
       // user is not activated 
       // log the user out 
       $this->Auth->logout(); 
       // redirect to an error page for inactive users 
       $this->redirect(..); 
      } 
     } 
     // redirect to an error page for wrong username/password 
     $this->redirect(..); 
    } 
} 

.

도움이 되었기를 바랍니다.

+0

그게 내가 소스를 보았을 때 생각한 것입니다. 이 작업을 수행하는 다른 방법이 있는지 확실하지 않았습니다. 그런 바인딩을 허용하는 것이 케이크에 보람있는 추가 일 것입니다. 답변 주셔서 감사합니다 :) – BIOS

+0

환영합니다 @BIOS. 애플리케이션의 응답 방식에 영향을 줄 수있는 인증 프로세스에 대한 정보를 잃어 버리고 있기 때문에 유스 케이스를 확실히 지원합니다. 이러한 기능을 구현하는 데 따르는 어려움은 이전 버전과의 호환성과 CakePHP가 가지고있는 configuration_ ethos에 대한 전체적인 규정을 뒷받침하는 것입니다. 충분한 사례가 있다고 생각되면 [이슈 추적기] (https://cakephp.lighthouseapp.com/dashboard)에 게시하거나 직접 구현하고 [repo] (https : //github.com/cakephp/cakephp/pulls) –

+0

난 당신이 유효한 사용 사례에서 '조건'기능을 사용하지 않도록해야하는 경우, 그 기능이 분명하게 파손 된 것으로 생각합니다. 로그인 메소드가 false가 아닌 모든 인증 실패를 포함하는 객체를 반환하면 더 좋을 것입니다. 이전 버전과의 호환성은 물론 문제가됩니다. 표를 고려할 것입니다. 다시 한번 감사드립니다. – BIOS