我想爲我的cakephp應用程序設置bcrypt。我之前在另一個應用上設置了它,並且工作正常。但是,在將加密代碼從一個應用程序複製/粘貼到另一個應用程序之後,它將密碼保存爲空白。Cakephp bcrypt保存空字段
數據庫設置正確,密碼字段爲varchar(225)。
我得出的結論是,下面的代碼行是導致問題的原因;
public function beforeSave($options = array()) {
if (isset($this->data[$this->alias]['password'])) {
$hash = Security::hash($this->data['User']['password'], 'blowfish');
$this->data['User']['password'] = $hash;
}
return true;
}
如果我要取出這個beforeSave函數,我的密碼將正確保存爲明文。如果我是來取代
$this->data['User']['password'] = $hash;
與
$this->data['User']['password'] = 'testpassword';
這將正確保存密碼testpassword。
我的AppController:
public $components = array(
'Session',
'Auth' => array(
'authenticate' =>'Blowfish',
'logoutRedirect' => array('controller'=>'fronts', 'action'=>'index'),
'authorize' => array('Controller')
)
);
我的表格:
<?php echo $this->Session->flash('auth'); ?>
<?php echo $this->Form->create('User'); ?>
<fieldset>
<?php
echo $this->form->input('username', array('placeholder' => 'Username', 'label' => false));
echo $this->form->input('password', array('placeholder' => 'Password', 'label' => false));
echo $this->form->submit('CREATE', array('class' => 'button'));
?>
</fieldset>
<?php echo $this->Form->end(); ?>
當嘗試登錄,但我知道它不會工作,我得到這個錯誤
Authentication adapter Blowfish was not found.
您可以發佈或查看您設置的表單嗎?也許一個字段的名稱是錯誤的 – Sixthpoint
好主意,只是編輯OP – user2444539