私はCakePHP 1.2をAuthとACLコンポーネントに使用しています。CakePHP認証コンポーネントがパスワードをハッシュしないのはなぜですか?
私のユーザー登録操作では、パスワードがハッシュで表示されています。具体的には、この式:
if ($this->data['User']['password'] !=
$this->Auth->password($this->data['User']['confirm_password']))
これは私がpassword
とconfirm_password
に対して同一の値を提出した場合でも、trueと評価しています。 Auth->password
への呼び出しを削除すると、式はfalseと評価されるため、パスワードはハッシュされていないことがわかります。
Authモジュールが自動的にパスワードをハッシュすると予想しました。私は間違って何をしていますか?ここで
は、私の見解である。ここでは
<?php
echo $form->create('User', array('action' => 'register'));
echo $form->input('email',
array('after' => $form->error(
'email_unique', 'This email is already registered.')));
echo $form->input('password');
echo $form->input('confirm_password', array('type' => 'password'));
echo $form->end('Register');
?>
は、ユーザコントローラからの私のレジスタアクションです:
:function register(){
if ($this->data) {
if ($this->data['User']['password'] !=
$this->Auth->password($this->data['User']['confirm_password'])) {
$this->Session->setFlash(__('Password and Confirm Password must match.', true));
$this->data['User']['password'] = '';
$this->data['User']['confirm_password'] = '';
}
else{
$this->User->create();
if ($this->User->save($this->data)){
$this->redirect(array('action' => 'index'), null, true);
}
else {
$this->data['User']['password'] = '';
$this->data['User']['confirm_password'] = '';
$this->Session->setFlash(__('Some problem saving your information.', true));
}
}
}
}
そして、ここでは、私がAuth
とAcl
モジュールを含む私のappController
です
class AppController extends Controller {
var $components = array('Acl', 'Auth');
function beforeFilter(){
if (isset($this->Auth)) {
$this->Auth->allow('display');
$this->Auth->fields =
array(
'username' => 'email',
'password' => 'password');
$this->Auth->authorize = 'actions';
}
}
}
私は間違っていますか?私はあなたが
hashPasswords ($data)
を探していると思う
。関数の先頭に
parent::beforeFilter()
を置くが、私は一つのことに困惑している、』それを修正 - 登録時にパスワードをハッシュしないように指定した場合、パスワードはどのように働くのですか?またはいつハッシュしますか? – Dave