【问题标题】:How to extend Laravel's bcrypt method如何扩展 Laravel 的 bcrypt 方法
【发布时间】:2016-03-31 01:34:40
【问题描述】:

我已经做了一个php class that combines different hash algorithms,我想在bcrypt() laravel 的方法中实现它。

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

如何扩展此方法?

谢谢!

【问题讨论】:

  • 您可以将自己的“散列器”绑定到容器作为“散列”。 bcypt 帮助程序从容器中解析“哈希”并在其上调用 ->make($value, $options)

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


【解决方案1】:

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

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

你可以这样做:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-20
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多