Я работаю с существующим проектом версии CakePHP 2.10. Я использовал функцию Auth-> login () для аутентификации. но это не работает. Я читал, что алгоритм хеширования был изменен после версии 2.4. Одна плохая вещь - необработанный пароль сохраняется в базе данных, и поскольку это старая большая система, невозможно изменить пароли на хэш-пароль. Я попытался отладить его. в журнале sql я вижу, что он соответствует только ID пользователя, а не паролю. что мне делать? Или как проверить простой пароль из базы данных?
sql log
AppController.php
class AppController extends Controller {
public $components = array(
'DebugKit.Toolbar',
'Session',
'Flash',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'users',
'action' => 'index'
),
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'index',
),
'authenticate' => array(
'Form' => array(
'userModel' => 'User',
'fields' => array(
'username' => 'userid',
'password'=>'password')
)
)
)
);
public function beforeFilter() {
$this->Auth->allow('index', 'view');
}
}
User.php
<?php
App::uses('AppModel', 'Model');
class User extends AppModel{
var $useDbConfig = "k_master";
public $name = 'User';
}
UsersController.php
<?php
class UsersController extends AppController{
// public $name = "User";
public function beforeFilter() {
parent::beforeFilter();
// Allow users to register and logout.
$this->Auth->allow('logout');
}
public function login(){
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error(__('Invalid username or password, try again'));
}
}
public function logout() {
return $this->redirectUrl($this->Auth->logout());
}
public function index() {
$this->set('users', $this->User->find('all'));
}
}
login.ctp
<div class="users form">
<?php echo $this->Flash->render('auth'); ?>
<?php echo $this->Form->create('User'); ?>
<fieldset>
<legend>
<?php echo __('Please enter your userid and password'); ?>
</legend>
<?php echo $this->Form->input('userid');
echo $this->Form->input('password');
?>
</fieldset>
<?php echo $this->Form->end(__('Login')); ?>
</div>