【发布时间】:2021-11-12 00:40:36
【问题描述】:
我在 Laravel 中使用 ajax 请求并传递 CSRF 令牌,但有时我的应用程序卡住并收到此错误:
代码:
var formData = $(this).serialize();
$.ajaxSetup({
header:$('meta[name="_token"]').attr('content')
});
$.ajax({
url:$(this).attr('action'),
type:'POST',
data:formData,
headers: {
Accept: "application/json"
},
success:function(response) {
此表单在模态弹出窗口中:
<form id="user-login" class="login" action="{{ url('login') }}" method="post">
{{ csrf_field() }}
控制器:
public function login(Request $request)
{
$validator = Validator::make($request->all(),[
'email' => ['required'],
'password' => ['required', 'string', 'min:5'],
]);
if ($validator->passes()) {
if (\Auth::guard('user')->attempt(['email' => $request->email, 'password' => $request->password, 'status' => 'active','isAdmin'=>'0']) || \Auth::guard('user')->attempt(['contact_number' => $request->email, 'password' => $request->password, 'status' => 'active','isAdmin'=>'0'])) {
$request->session()->regenerate();
return response(['success' => true,'message'=>'Successfully Login'], 200);
}
else
{
$message = 'Invalid username or password';
return response()->json(['success'=>false,'message' => $message]);
}
}
return Response::json(['errors' => $validator->errors()]);
}
路线:
Route::post('/user-login', 'Auth\UserRegisterController@login')->name('user-login');
RedirectIfAuthenticated 中间件:
public function handle($request, Closure $next, $guard = null)
{
if ($guard == "employee" && Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::EMPLOYEE_HOME);
}
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
return $next($request);
}
任何解决方案,谢谢
【问题讨论】:
-
你能分享控制器动作吗? 302 意味着你被重定向了
-
@GertB.: 我也添加了我的控制器代码,但这个问题存在于所有 ajax 请求中,但有时我的应用程序运行良好