public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
return $this->hasher->check($plain, $user->getAuthPassword());
}
Run Code Online (Sandbox Code Playgroud)
如何覆盖validateCredentials类中的方法EloquentUserProvider?谢谢!
mhe*_*ier 18
在Laravel 5.4中,您无需在config/app.php中注册CustomUserProvider.
首先,在Providers目录中创建一个CustomUserProvider.php文件:
<?php
namespace App\Providers;
use Illuminate\Auth\EloquentUserProvider as UserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;
class CustomUserProvider extends UserProvider {
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
return $this->hasher->check($plain, $user->getAuthPassword());
}
}
Run Code Online (Sandbox Code Playgroud)
在此之后,更改AuthServiceProvider.php文件中的boot()Method :
public function boot()
{
$this->registerPolicies();
\Illuminate\Support\Facades\Auth::provider('customuserprovider', function($app, array $config) {
return new CustomUserProvider($app['hash'], $config['model']);
});
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以通过将驱动程序名称添加到config/auth.php文件来使用提供程序:
'providers' => [
'users' => [
'driver' => 'customuserprovider',
'model' => App\User::class,
'table' => 'users',
],
],
Run Code Online (Sandbox Code Playgroud)
您可以创建自己的 UserProvider,然后可以覆盖原始 UserProvider 中的功能。
首先创建 CustomUserProvider:
use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;
class CustomUserProvider extends UserProvider {
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
return $this->hasher->check($plain, $user->getAuthPassword());
}
}
Run Code Online (Sandbox Code Playgroud)
然后在 config/app.php 中注册新的 CustomUserProvider
'providers' => array(
... On the bottom, must be down to override the default UserProvider
'Your\Namespace\CustomUserProvider'
),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4779 次 |
| 最近记录: |