我不得不面對相同的問題,需要重寫一些PasswordBroker函數。經過大量的網頁和許多失敗的嘗試對調查的話,我結束了以下實現:
創建一個CustomPasswordResetServiceProvider軟件\供應商裏面,我註冊了一個CustomPasswordBrokerManager實例。
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Services\CustomPasswordBrokerManager;
class CustomPasswordResetServiceProvider extends ServiceProvider{
protected $defer = true;
public function register()
{
$this->registerPasswordBrokerManager();
}
protected function registerPasswordBrokerManager()
{
$this->app->singleton('auth.password', function ($app) {
return new CustomPasswordBrokerManager($app);
});
}
public function provides()
{
return ['auth.password'];
}
}
在配置/ app.php註釋行:
//Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
並加入:
App\Providers\CustomPasswordResetServiceProvider::class,
內部應用\服務文件夾中創建一個CustomPasswordBrokerManager和複製的上下文的默認PasswordBrokerManager位於:
照亮\身份驗證\密碼\ PasswordBrokerManager.php
然後修改功能決心給我回CustomPasswordProvider類的一個實例。
protected function resolve($name)
{
$config = $this->getConfig($name);
if (is_null($config)) {
throw new InvalidArgumentException("Password resetter [{$name}] is not defined.");
}
return new CustomPasswordBroker(
$this->createTokenRepository($config),
$this->app['auth']->createUserProvider($config['provider'])
);
}
最後內部應用程序\ Services文件夾我創建了一個CustomPasswordBroker類擴展默認PasswordBroker位於:
照亮\身份驗證\密碼\ PasswordBroker和重寫,我需要的功能。
use Illuminate\Auth\Passwords\PasswordBroker as BasePasswordBroker;
class CustomPasswordBroker extends BasePasswordBroker
{
// override the functions that you need here
}
不知道這是最好的實現,但它爲我工作。
這是一個非常類似的實現,我最終做了。很好解釋與目錄和所有的標識。 +1並標記爲正確! –
只需更改密碼重置所需的密碼長度。 6個字符的最小長度在laravel代碼中埋藏得很深,這樣我只能在這裏用你的答案改變它。非常感謝! – johnnydoe82
謝謝你。我被這個密碼代理和密碼代理管理器弄得一團糟。說真的,我無法理解它們是如何使以前很簡單的東西變得複雜,如此糟糕。 另外,對於在Laravel 5.4上執行此操作的人員,服務提供者的「註冊」方法與此處顯示的內容略有不同。實質上,'registerPasswordBroker'方法應該複製到'Illuminate \ Auth \ Passwords \ PasswordResetServiceProvider'上,除了使用自定義'CustomPasswordBrokerManager'實例的部分。 – racl101