app\Http\Middleware\Authenticate.php içerisinde redirectTo() yöntemini şu şekilde düzenleyin:
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
} else {
return response()->json([], 401);
}
}
Böylece kullanıcı giriş yapmamışsa; normal isteklerde login sayfasına yönlendirecek, ajax isteklerinde HTTP 401 Unauthorized kodu ile JSON dönüş yapacak.
Daha sonra diğer scriptlerin en üstünde olacak şekilde jQuery global hata işleyicisini ekleyin:
$.ajaxSetup({
error: function (jqXHR, statusText, error) {
if(jqXHR.status == 401) {
// Kullanıcı giriş yapmamış, yetkisi yok ya da zaman aşımına uğradı. Burada ekrana
// popup ile bilgi gösterebilirsiniz, kullanıcıyı zaman aşımı sayfasına ya da
// login sayfasına yönlendirebilirsiniz.
}
}
});
Herhangi bir ajax isteği yaptığınızda auth hatası meydana gelirse HTTP 401 kodu ile hata dönecek. Global hata işleyicisi de bu hatayı otomatik yakalayacak.
Siz de yorum ile belirttiğim yerde işlem yaptırırsınız.
Buradan yola çıkarak farklı hataları da ajax ile yakalayabilirsiniz.