You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CakePHP4自定义PasswordHasher的正确存放位置与规范实现方法

规范实现CakePHP4自定义PasswordHasher的方案

1. 自定义哈希器的正确存放位置

将MyCustomPasswordHasher.php放在项目的src/Authentication/PasswordHasher/目录下,目录结构与命名空间严格对应:

<?php
declare(strict_types=1);

namespace App\Authentication\PasswordHasher;

use Cake\Auth\AbstractPasswordHasher;

class MyCustomPasswordHasher extends AbstractPasswordHasher
{
    // 实现自定义哈希逻辑
    public function hash($password)
    {
        // 你的密码哈希代码
    }

    // 实现密码验证逻辑
    public function check($password, $hashedPassword)
    {
        // 你的密码校验代码
    }
}

2. 在认证服务中配置自定义哈希器

修改src/Application.php的getAuthenticationService()方法,配置密码标识符时指定自定义哈希器的完整命名空间即可:

public function getAuthenticationService(ServerRequestInterface $request): AuthenticationServiceInterface
{
    $service = new AuthenticationService();
    
    // 省略其他身份验证器、路由等配置
    
    $service->loadIdentifier('Authentication.Password', [
        'fields' => [
            'username' => 'email',
            'password' => 'password',
        ],
        'passwordHasher' => [
            'className' => 'App\Authentication\PasswordHasher\MyCustomPasswordHasher',
            // 可添加哈希器所需的配置参数
        ]
    ]);
    
    return $service;
}

3. 无需手动注册自动加载的原因

CakePHP4 默认遵循PSR-4自动加载规范,src/目录对应根命名空间App\,只要文件路径和命名空间一一对应,框架会自动完成类的加载,不需要额外注册自动加载函数。

注意:绝对不要修改vendor目录下的文件,该目录仅用于存放第三方依赖包,自定义业务代码必须放在src目录下,这是框架的标准规范,也便于代码维护和版本控制。

内容的提问来源于stack exchange,提问作者mmrn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:01:15