2013-12-19 4 views
0

바닐라 CakePHP는 사용자 편집보기에서 암호 필드를 잘 처리하지 못하기 때문에 (해시 된 암호를 암호 필드에 되풀이하는 등), dereuromark의 PasswordableBehavior를 사용하여 사용자 등록 및 암호 업데이트를 처리하려고합니다.CakePHP에서 PasswordableBehavior를 사용하는 방법은 무엇입니까?

다음 변경 사항을 적용하는 자습서 (http://www.dereuromark.de/2011/08/25/working-with-passwords-in-cakephp/)를 시도했지만 서버에서 오류가 계속 발생합니다. 여기에 어떤 문제가 있습니까? 오류는 PasswordableBehavior.php에 있기 때문에 100 % 확실하지 않습니다.

UsersController.php :

public function register() { 
if ($this->request->is('post') || $this->request->is('put')) { 
    $this->User->Behaviors->attach('Tools.Passwordable'); 
    if ($this->User->save($this->request->data, true, array('username', 'name', 'email', 'pwd', 'pwd_repeat', 'group_id'))) { 
    $this->Session->setFlash(__('The user has been saved'), 'flash/success'); 
      $this->redirect(array('action' => 'index')); 
} else { 
      $this->Session->setFlash(__('The user could not be saved. Please, try again.'), 'flash/error'); 
     } 
    unset($this->request->data['User']['pwd']); 
    unset($this->request->data['User']['pwd_repeat']); 
} 

register.ctp (가능한 보안 구멍 경고)

<?php 
echo $this->Form->create('User', array('role' => 'form')); 
echo $this->Form->input('username', array('class' => 'form-control')); 
echo $this->Form->input('name', array('class' => 'form-control')); 
echo $this->Form->input('email', array('class' => 'form-control')); 
echo $this->Form->input('password', array('class' => 'form-control')); 
echo $this->Form->hidden('group_id', array('value'=>3)); 
echo $this->Form->submit('Submit', array('class' => 'btn btn-large btn-primary')); 
echo $this->Form->end(); 

마지막으로, 서버 오류 :

Strict (2048): Declaration of PasswordableBehavior::beforeValidate() should be compatible with ModelBehavior::beforeValidate(Model $model, $options = Array) [APP/Plugin/Tools/Model/Behavior/PasswordableBehavior.php, line 338] 
Strict (2048): Declaration of PasswordableBehavior::beforeSave() should be compatible with ModelBehavior::beforeSave(Model $model, $options = Array) [APP/Plugin/Tools/Model/Behavior/PasswordableBehavior.php, line 338] 

답변

1

1) 엄격한 오류 rs 큰 문제가되지 않습니다. IMO는 엄격한 오류보고 기능을 해제합니다.

2) 동작의 두 메서드 (beforeValidate()beforeSave())에 전체 옵션이 없기 때문에 표시되는 오류가 발생했습니다.

그냥 그들은 다음과 같은 올바른 옵션을 가지고 있고, 엄격한 오류가 멀리 갈 것입니다 있는지 확인하십시오

public function beforeValidate(Model $model, $options = array()) { 
    //... 

public function beforeSave(Model $model, $options = array()) { 
    //...