And*_* F. 12 php laravel laravel-5 laravel-authorization laravel-mail
有谁知道如何覆盖laravel密码代理中使用的函数?我知道文档:
https://laravel.com/docs/5.3/passwords#resetting-views
提供有关如何为视图和一些表面层次的事情做些什么的信息,但它根本不是很清楚,或者我可能没有阅读足够的时间.
我已经知道如何覆盖ResetsPasswords.phpTrait但是覆盖了Password::broker()for的下一层的功能.
如果需要更多信息,我可以提供一些信息.
先感谢您.
KoK*_*oKa 28
我不得不面对同样的问题,需要覆盖一些PasswordBroker函数.经过对网络的大量调查以及许多尝试失败的尝试后,我最终实现了以下实施:
在App\Providers中创建了一个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'];
}
}
Run Code Online (Sandbox Code Playgroud)在config/app.php中注释掉了行:
//Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
并添加了:
App\Providers\CustomPasswordResetServiceProvider::class,
在App\Services文件夹中创建了一个CustomPasswordBrokerManager并复制了位于以下位置的默认PasswordBrokerManager的上下文:
Illuminate\Auth\Passwords\PasswordBrokerManager.php
然后修改了函数resolve以返回我的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'])
);
}
Run Code Online (Sandbox Code Playgroud)最后在App\Services文件夹中,我创建了一个CustomPasswordBroker类,它扩展了位于以下位置的默认PasswordBroker:
Illuminate\Auth\Passwords\PasswordBroker并覆盖了我需要的功能.
use Illuminate\Auth\Passwords\PasswordBroker as BasePasswordBroker;
class CustomPasswordBroker extends BasePasswordBroker
{
// override the functions that you need here
}
Run Code Online (Sandbox Code Playgroud)不确定这是否是最好的实现,但它对我有用.
答案/sf/answers/2999916391/中的步骤1和3缺少一些内容
步骤1
可能最安全的方法是将类从复制Illuminate\Auth\Passwords\PassswordResetServiceProvider.php到App\Provider\CustomPasswordResetServiceProvider并更改:
namespace App\Providers;CustomPasswordResetServiceProvider use App\Services\CustomPasswordBrokerManager;到顶部registerPasswordBroker重命名 PasswordBrokerManager为CustomPasswordBrokerManager第2步。
除了更改解决方法之外,还请执行以下操作:
namespace App\Services;use Illuminate\Auth\Passwords\DatabaseTokenRepository;到顶部CustomPasswordBrokerManager | 归档时间: |
|
| 查看次数: |
6928 次 |
| 最近记录: |