gpt4 book ai didi

php - 在 Auth 组件 Cakephp 中关闭密码哈希

转载 作者:行者123 更新时间:2023-11-29 22:10:09 26 4
gpt4 key购买 nike

我正在尝试将登录屏幕放入我的应用程序中。模型已启动并运行。

现在根据 CakePHP 3.x 食谱,我已将以下内容添加到我的代码中。

// In src/Controller/AppController.php
namespace App\Controller;
use Cake\Controller\Controller;
class AppController extends Controller
{
public function initialize()
{
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'fields' => [
'username' => 'email',
'password' => 'password'
]
]
],
'loginAction' => [
'controller' => 'Users',
'action' => 'login'
]
]);
// Allow the display action so our pages controller
// continues to work.
$this->Auth->allow(['display']);
}
}

//在 src/Controller/UsersController.php 中

public function login()
{
if ($this->request->is('post')) {
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error('Your username or password is incorrect.');
}
}

在login.ctp中

<h1>Login</h1>
<?= $this->Form->create() ?>
<?= $this->Form->input('email') ?>
<?= $this->Form->input('password') ?>
<?= $this->Form->button('Login') ?>
<?= $this->Form->end() ?>

我已经启动并运行了屏幕。但后来发现密码需要进行哈希处理。 mysql数据库中没有这个。我在数据库中使用 sha1 对密码进行了哈希处理。但发现cakephp默认使用bcrypt,所以配置了弱“sha1”密码。

但是密码中添加了盐值,这导致两个密码不匹配。我该如何解决这个问题?

我也很喜欢关闭哈希功能,在 SO 中找到了一些关于此的链接。但没有一个是用于蛋糕 php 3x 的。在文档中,它提到如果我不想使用哈希功能,请关闭身份验证组件。但我想用它。

干杯,

索拉夫

最佳答案

试试这个,你的问题一定会得到解决:-

// src/Model/Entity/User.php
namespace App\Model\Entity;

use Cake\Auth\DefaultPasswordHasher;
use Cake\ORM\Entity;

class User extends Entity
{

// Make all fields mass assignable for now.
protected $_accessible = ['*' => true];


protected function _setPassword($password)
{
return (new DefaultPasswordHasher)->hash($password);
}
}

关于php - 在 Auth 组件 Cakephp 中关闭密码哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31757974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com