【问题标题】:How can I customize the password field in Laravel HTTP Basic Authentication?如何自定义 Laravel HTTP 基本身份验证中的密码字段?
【发布时间】:2019-04-12 00:32:40
【问题描述】:

当我使用连接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 laravel-5.8 laravel-authentication


【解决方案1】:

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

【讨论】:

  • 更准确地说,我创建了一个扩展SessionGuardSessionGuardExtended 类,然后我添加了AppServiceProvider
猜你喜欢
  • 2013-04-06
  • 1970-01-01
  • 2015-12-08
  • 2013-11-10
  • 2015-11-12
  • 2018-08-30
  • 1970-01-01
  • 2011-03-18
  • 2019-07-22
相关资源
最近更新 更多