3

当我使用连接HTTP Basic Authentication时,我想将password字段更改为 SQL 请求中的。我使用的中间件是Laravel 特有的。我设法通过创建中间件来更改用户名,但我无法更改密码字段。user_passwordauth.basic

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()];
    }
}

有谁知道如何在不修改基本文件的情况下更改它?

4

1 回答 1

2

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

于 2019-04-12T07:37:38.217 回答