当我使用连接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()];
}
}
有人知道如何在不修改基础文件的情况下进行更改吗?
答案 0 :(得分:2)
您可以通过扩展外部包类并覆盖需要更改的方法来自定义外部包类。可能需要扩展多个类,才能将调用基类的位置更改为自定义类。