我做了一个结合了不同哈希算法的 php 类,我想在bcrypt()laravel 的方法中实现它。
我目前的解决方案是访问 AuthController 并替换bcrypt($data['password'])为,但我想知道是否有一种方法可以在不更改Illuminate Hashing供应商或 AuthController 中bcrypt(phashp($data['password']))的代码的情况下修改该方法。
如何扩展此方法?
谢谢!
我做了一个结合了不同哈希算法的 php 类,我想在bcrypt()laravel 的方法中实现它。
我目前的解决方案是访问 AuthController 并替换bcrypt($data['password'])为,但我想知道是否有一种方法可以在不更改Illuminate Hashing供应商或 AuthController 中bcrypt(phashp($data['password']))的代码的情况下修改该方法。
如何扩展此方法?
谢谢!
您需要做的是进入config/app.php并Illuminate\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