更改请求参数(电子邮件),然后在 Laravel 中对用户进行身份验证

Alter Request parameter(Email) and then Authenticate User in Laravel

我需要更改请求参数,即电子邮件,然后尝试使用新电子邮件登录。 我在尝试什么:

$user_handle = $request->email;
$gook = Gookarma::where('handle', '=', $user_handle)->firstOrFail();
$acc = Account::find($gook->karmable_id);
$request->email = $acc->email;
            
if ($this->attemptLogin($request)) {
    return $this->sendLoginResponse($request);
}

但它不会更新请求,并且登录尝试与之前的电子邮件字段输入一起进行。 我从 API.

提取的上一封电子邮件

我尝试使用 request->all() 但是在请求更新后尝试登录时,它显示错误。

你可以使用merge方法:

$request->merge([
    'email' =>$acc->email,
]);

或者您可以构建一个数组来替换整个请求输入,例如:

$arrayToReplace=$request->all();
$arrayToReplace['email']=$acc->email;

然后使用replace方法:

 $request->replace($arrayToReplace);

如果以上方法都不行,请尝试自己提出请求:

 $array=$request->all();
 $array['email']=$acc->email;
 $req = new Request([$array]);

然后使用新请求进行操作。

您可以尝试这样的操作:

$request->merge(['email' => $acc->email]);

创建一个新的 Request 实例变量并将之前请求变量的电子邮件和密码分配给新变量对我有用。

$req = new Request([$request]);
$req['email']=$acc->email;
$req['password'] = $request->password;