我做了一个结合了不同哈希算法的 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