我想用纯文本密码字段在现有数据库上实现 CakePHP 2 网站。
这是我的 AppController
class AppController extends Controller {
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'users', 'action' => 'home'),
'authError' => 'You cannot view this page',
'authorize' => array('Controller'),
'authenticate' => array(
'Form' => array(
'userModel' => 'User',
'fields' => array('username' => 'user_id', 'password' => 'user_password')
)
)
)
);
public function isAuthorized($user) {
return true;
}
function beforeFilter() {
$this->Auth->allow('home');
//$this->Auth->authenticate = $this->User;
parent::beforeFilter();
}
这是我的用户控制器。
class UsersController extends AppController {
public $paginate = array(
'fields' => array('user_id', 'user_desc', 'user_password'),
'limit' => 25,
'order' => array(
'user_id' => 'asc'
)
);
function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash('Cannot Login');
}
}
}
}
这是我的用户模型
class User extends AppModel {
public $name = 'User';
public $primaryKey = 'user_id';
public $belongsTo = 'Group';
}
根据上面的那些文件,当我按下 login.ctp 上的登录按钮时,我看到
select * from users where user_password = 'this_is_hashing_password'
在 sql 转储部分。
那么,如何关闭自动哈希算法,让 login() 将用户输入与数据库存储的密码作为纯文本进行比较???
我在 CakePHP 书上尝试了很多阅读,但我找不到任何内容,而且使用从互联网上找到的 hashPasswords($data) 技术也不起作用。
请帮忙。孔塔。