如何在Laravel HTTP Basic Authentication中自定义密码字段?

时间:2019-04-12 00:32:41

标签: php laravel laravel-5.8 laravel-authentication

当我使用连接HTTP Basic Authentication时,我想在SQL请求中将password字段更改为user_password。我使用的中间件是auth.basic特定于Laravel的。我通过创建中间件设法更改了用户名,但是我不能更改密码字段。

class CustomBasicAuth extends AuthenticateWithBasicAuth
{
    public function handle($request, Closure $next, $guard = null, $field = null)
    {
        $this->auth->guard($guard)->basic($field ?: 'user_username');

        return $next($request);
    }
}

我做了一些研究,发现我们必须尝试修改此方法。

/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php

class SessionGuard implements StatefulGuard, SupportsBasicAuth
{
    use GuardHelpers, Macroable;

    protected function basicCredentials(Request $request, $field)
    {
        return [$field => $request->getUser(), 'password' => $request->getPassword()];
    }
}

有人知道如何在不修改基础文件的情况下进行更改吗?

1 个答案:

答案 0 :(得分:2)

您可以通过扩展外部包类并覆盖需要更改的方法来自定义外部包类。可能需要扩展多个类,才能将调用基类的位置更改为自定义类。