Tu as mis le hash dans le beforeSave mais tu ne sauvegarde l'utilisateur nulle part, il faut que tu appelles la method save() pour que ton beforeSave marche.
Grosso-modo comme ça :
<?php
class UsersController extends AppController{
public $components = array('Session');
public function beforeFilter(){
$this->Auth->allow('register');
}
public function register(){
$this->set('title_for_layout', 'Register');
$this->set('active', 'register');
$this->User->set($this->data);
if($this->request->is('post')){
if($this->User->validates()){
if($this->request->data'User']'password'] == $this->request->data'User']'password_confirm']){
// On sauvegarde quand même pour que le beforeSave fonctionne
if($this->User->save($this->request->data))
{
$this->Session->setFlash('Utilisateur sauvegardé');
}
}else{
$this->Session->setFlash('Password doesn\'t match', 'default', array(), 'password');
}
}else{
}
}
}
}
?>
Et la si tu regardes ta base, tu verras que ton utilisateur aura son mot de pass hashé sauvegardé.
PS: je te déconseille de fermer le tag php en bas des pages "?>" ça apporte quelques erreurs sur certains frameworks et certains scripts.