1

我做了一个结合了不同哈希算法的 php 类,我想在bcrypt()laravel 的方法中实现它。

我目前的解决方案是访问 AuthController 并替换bcrypt($data['password'])为,但我想知道是否有一种方法可以在不更改Illuminate Hashing供应商或 AuthController 中bcrypt(phashp($data['password']))的代码的情况下修改该方法。

如何扩展此方法?

谢谢!

4

1 回答 1

2

您需要做的是进入config/app.phpIlluminate\Hashing\HashServiceProvider::class,用自定义替换,您现在可以设置自定义单例。在上述提供者中有:

$this->app->singleton('hash', function () {
    return new BcryptHasher;
});

你可以这样做:

$this->app->singleton('hash', function () {
    return new MyCustomHasher;
});

当然定义MyCustomHasher将实现HasherContract接口的类

它应该可以正常工作,因为当您查看bcrypt定义时:

function bcrypt($value, $options = [])
{
    return app('hash')->make($value, $options);
}

你看到你运行的最终运行的类是绑定到hash

于 2015-12-24T23:44:22.397 回答