如何改变laravel中间件,使ajax请求因登录会话超时而失败

如何改变laravel中间件,使ajax请求因登录会话超时而失败,ajax,laravel,laravel-5.4,laravel-middleware,Ajax,Laravel,Laravel 5.4,Laravel Middleware,我希望有人能发现这个问题,并告诉我在哪里解决它。下面是一个场景。我登录我的网站,玩一会儿,然后打开网页,然后睡觉。当我醒来时,这一页仍然打开着。如果单击指向新页面的链接,身份验证中间件会识别我已超时会话,不再进行身份验证,并将我踢到登录页面以重新登录。太好了,这就是我想要的 现在,如果是相同的场景,除了我醒来,页面仍然打开,我单击一个按钮发送ajax请求(到受auth中间件保护的路由),请求就失败了,但没有意识到我不再经过身份验证,也没有将我踢回登录页面 我可以更改什么,以使由于未通过身份验证而

我希望有人能发现这个问题,并告诉我在哪里解决它。下面是一个场景。我登录我的网站,玩一会儿,然后打开网页,然后睡觉。当我醒来时,这一页仍然打开着。如果单击指向新页面的链接,身份验证中间件会识别我已超时会话,不再进行身份验证,并将我踢到登录页面以重新登录。太好了,这就是我想要的

现在,如果是相同的场景,除了我醒来,页面仍然打开,我单击一个按钮发送ajax请求(到受auth中间件保护的路由),请求就失败了,但没有意识到我不再经过身份验证,也没有将我踢回登录页面


我可以更改什么,以使由于未通过身份验证而失败的ajax请求将我踢到登录页面?

您可以创建一个名为
ajaxAuthenticationCheck
的单独中间件,该中间件在
句柄中包含以下内容:

if ($request->ajax() && ! auth()->check()) {
    auth()->logout();
    return redirect()->back();
}
并在每个ajax路由上设置它