Cakefpi 4.1 пользовательского хеша пароляPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Cakefpi 4.1 пользовательского хеша пароля

Сообщение Anonymous »

Я бросаю сообщение в бутылку для тех, кто достаточно хорошо разбирается в Cakephp 3.8. Признаюсь, я немного заржавел после нескольких лет перерыва в разработке.
Я объясню свою проблему:
У меня есть базовый модуль, который позволяет регистрировать пользователей и входить в систему. Все идет нормально. Моя проблема возникает на этапе входа в систему, поскольку я использую собственный хэш типа $password+$key. Ключ $key автоматически генерируется во время регистрации, а затем сохраняется в таблице пользователей вместе с другой информацией.
Я хотел бы знать, есть ли способ получить это значение без использования ручных проверок, чтобы мой код был абсолютно чистым и функциональным.
В настоящее время я могу ввести любой пароль, и $user возвращает true, пока адрес электронной почты существует в таблице.
src/Controller/Users/Usercontroller.php

Код: Выделить всё

public function register() {
$userTable = TableRegistry::getTableLocator()->get('Users');
$user = $this->Users->newEntity($this->request->getData(), ['validate' => 'UserStep1']);
$user->type = $this->request->getSession()->read('account-type');
$user->salt = sha1(md5($this->request->getSession()->read('salt')));
$user->password = $hash->hash($this->request->getData('password'),$this->request->getSession()->read('salt'));

if ($userTable->save($user)) {
return true;
}
}

public function login() {
if($this->request->is('post')) {
$user = $this->Auth->identify();
if($user) {
$this->Auth->setUser($user);
$this->redirect($this->redirect($this->Auth->redirectUrl()));
$this->Flash->response('Connecté', [
'key'   => 'response',
'params'    => [
'status'    => 'success'
]
]);
} else {
$this->Flash->response('Identifiant ou mot de passe incorrect', [
'key'   => 'response',
'params'    => [
'status'    => 'error'
]
]);
}
}
}
src/Auth/CustomPasswordHasher.php

Код: Выделить всё

namespace App\auth;

use Cake\Auth\AbstractPasswordHasher;

class CustomPasswordHasher extends AbstractPasswordHasher {

public function hash($password, $securestring = null) {
$encode=  sha1(md5('stringmasked'). md5(sha1($password)).sha1(sha1(md5($securestring))));

return $encode;
}
public function check($password, $salt)
{
$encode = sha1(md5('stringmasked').md5(sha1($password)).sha1(($salt)));

return $encode;
}
}

src/Controller/AppController.php

Код: Выделить всё

$this->loadComponent('Auth', [
'authenticate'  => [
'Form'  => [
'fields'    => ['username'  => 'email'],
'passwordHasher'    => ['className' => 'Custom']
]
]
]);
$this->Auth->allow();
Признаюсь, я немного застрял в этой проблеме, я действительно не знаю, откуда эта проблема.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/797 ... akephp-3-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»