php - 如何自定义 Laravel HTTP 基本身份验证中的密码字段?

标签 php laravel laravel-5.8 laravel-authentication

我想在使用连接HTTP Basic Authentication 时将SQL 请求中的password 字段更改为user_password .我使用的中间件是特定于 Laravel 的 auth.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()];
    }
}

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

最佳答案

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

关于php - 如何自定义 Laravel HTTP 基本身份验证中的密码字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55642908/

相关文章:

php - 如何多表?

php - 对总计未存储在数据库中的值的总和进行排名

PHP:错误检查中的错误

Laravel 多个服务器与 AWS 队列一起使用

laravel - 从 Laravel 状态加载城市

php - 如何在 Laravel 中进行条件数据库播种?

php - 搜索页面的 SELECT 语句

php - Laravel - 软删除没有生效

php - 如何正确运行需要大量处理的查询而不会出错

laravel - 如何保护路由 laravel-5.8