如何扩展Laravel的bcrypt方法

时间:2015-12-24 16:37:47

标签: php laravel hash illuminate-container laravel-5.2

我已经制作了php class that combines different hash algorithms,我想在EXECUTE IMMEDIATE laravel的方法中实现它。

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

如何扩展此方法?

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要做的是进入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

的finnally run类