cakephp 2.x не проверяет пароль при аутентификации - PullRequest
0 голосов
/ 12 апреля 2019

Я работаю с существующим проектом версии 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>
...