2010-04-13 1 views
1

는 내가 레지스터 페이지에있을 때 http://planetcakephp.org/aggregator/items/2604-create-simple-user-authentication-using-cakephp%E2%80%99s-auth-componentCakePHP의 인증 컴포넌트 암호 불일치

는 어떻게 확인합니까이 페이지에서 자습서에 따라 작동하도록 인증을 얻기 위해 관리, 암호 및 사용자가 제공 암호를 확인 이 일치하지 않으면 사용자가 입력 한 값으로 암호 필드가 채워지고 해시 된 버전은 채워지지 않습니다.

감사합니다,
티 당신이 Auth component.From을 사용한 적이 있기 때문에 나는이 작업을 수행하기 어려울 것 input.Also 때문에 암호 기능이 알아낼 필요가 생각하지 않습니다

+1

왜 처음부터 원했습니까? 암호가 잘못되었습니다. 암호 필드가 가면, 당신은 거기에 무엇을 볼 수 없습니다. 그것을 다시 채우는 것은 무엇입니까? 사용자는 어쨌든 처음부터 입력해야합니다. – deceze

+0

사실 양식 제출에 문제가있는 경우 두 비밀번호 필드를 모두 재설정해야합니다. 그렇지 않니? –

답변

0

cookbook : 사용자 이름 필드는 제출 된 데이터에있는 경우

정식 구성 요소는 자동 것이다

그건 당신을 의미 암호 필드를 해시합니다 당신이 그것을 제출 한 후에 원래 암호 데이터를 잃었습니다. 그러나, 나는 자바 스크립트로 접근하는 까다로운 방법이 있다고 생각 : $form->input('password');과 동일한 값이지만 다른 이름입니다 레지스터보기 파일에 숨겨진 입력을 추가, 그럼 당신은 그것을 검색 할 수 있습니다 액션이 대신 trickpassword를 사용

if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) 
{ 
    $this->User->save($this->data); 
    $this->Session->setFlash("your data has been saved."); 
    $this->redirect("index"); 
} 
else 
{ 
    $this->data['User']['password'] = $this->data['User']['trickpassword']; 
    /*i prefer this 
    $this->data['User']['password'] = ''; 
    $this->data['User']['password_confirm'] = ''; 
    */ 
    $this->Session->setFlash('Password confirm fail!'); 
} 
+1

form-validation 관용구와 잘 어울리 며 세션 검증 논리가 다른 것을 반환 할 수 있기 때문에'$ this-> User-> invalidate ('trickpassword', 'Password confirm fail!') '를 세션 var에 선호합니다. 오류가 동시에 발생합니다. –

+0

@ Daniel Wright, 좋은 참고 사항 :) – Young

1

text.eg 비밀번호 입력에 표시, 당신은 이미 해시되지 않은 암호를 사용하여 password_confirm 필드가 있습니다. 다음과 유사한 규칙을 사용하여 암호 필드를 빈 암호와 대조하여 확인할 수 있습니다. 그런 다음 password_confirm을 해싱하여 두 암호가 같은지 확인하십시오.

http://bin.cakephp.org/saved/42156