在app/Http/Middleware/RedirectIfAuthenticated.php文件中添加以下代码,以确保在AJAX请求的情况下不会进行重定向:
public function handle($request, Closure $next, ...$guards)
{
$response = $next($request);
if (! $request->expectsJson() && Auth::guard($guards)->check()) {
return redirect('/home');
}
return $response;
}
注意:确保在使用AJAX的情况下,请求带有Accept头部,用于指示控制器要发送Ajax响应。例如,Accept:Application / json 或Accept:text / plain.
在控制器中,您可以使用以下代码进行验证并在失败时返回错误响应:
if ($request->ajax()) {
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'message' => 'required'
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()]);
}
}
请注意,Validator和response类都需要使用其各自的文件引用声明。
通过这种方式,您可以控制Laravel 9在AJAX验证失败时是否进行重定向,并可以提供错误响应以供处理。