自定义UserProvider,更改验证方法

 新建UserProvider,如果继承EloquentUserProvider,注入model是必须的,或者去继承interface,自己实现一些方法

use IlluminateAuthEloquentUserProvider;
use IlluminateContractsAuthAuthenticatable as UserContract;

class MyUserProvider extends EloquentUserProvider
{
    protected $model;

    public function __construct($model)
    {
        $this->model = $model;
    }
   

    public function validateCredentials(UserContract $user, array $credentials)
    {
        $plain = $credentials['password'];

        $secret = $user->getAuthPassword();

        if (password_verify($plain, $secret)){
            return true;
        }elseif ($this->think_ucenter_md5($plain) === $secret){
            $user->password = password_hash($plain, PASSWORD_DEFAULT);
            $user->save();
            return true;
        }
    }

    private function think_ucenter_md5($str)
    {
        return md5(sha1($str) . 'VvKl0QZBE7nao5xtXqGkWrMPchRbHdwmLF361izT');
    }


}

appProvidersAuthServiceProvider.php 中进行注册

    public function boot(GateContract $gate)
    {
        $this->registerPolicies($gate);

        Auth::provider('my', function($app) {
            // 返回IlluminateContractsAuthUserProvider实例...
            return new MyUserProvider(User::class);
        });
    }

更改config/auth.php

    'providers' => [
        'users' => [
            'driver' => 'my',
            'model' => myUserUser::class,
        ],
原文地址:https://www.cnblogs.com/fenle/p/5650882.html