gpt4 book ai didi

javascript - Laravel:在 ajax 请求 session 过期后重定向到登录

转载 作者:可可西里 更新时间:2023-10-31 22:42:33 26 4
gpt4 key购买 nike

如果我登录到我的网络应用程序,等待 session 过期,然后在我的网络应用程序中使用表单发出 ajax 请求,我会在控制台中看到以下错误:

无法加载资源:服务器响应状态为 500(内部服务器错误)

理想情况下会发生重定向到登录页面或在触发 ajax 请求的表单下显示错误消息(即对用户有意义的内容)。可能值得注意的是,如果用户在表单上出现验证错误,我已经有了客户端代码来抛出错误以向用户显示错误消息。

我相信我知道如何检查 session 是否已过期并返回对用户有用的信息,告诉他们登录,但我不确定如何在全局范围内实现这一点。所以我想知道是否可以从 Laravel 的后端全局处理这个问题和(或)我是否需要为每个 ajax 请求编写一些逻辑来捕获问题以在客户端显示错误消息?

我正在使用 Laravel 和 Javascript/JQuery。感谢您的帮助!

最佳答案

这是针对您的案例的快速解决方案:

Controller (例如 AuthController.php):

/**
* Check user session.
*
* @return Response
*/
public function checkSession()
{
return Response::json(['guest' => Auth::guest()]);
}

此外,可能需要添加此方法名称以供 guest 中间件忽略:

$this->middleware('guest', ['except' => ['logout', 'checkSession']]);

路线:

Route::get('check-session', 'Auth\AuthController@checkSession');

布局(JS部分),仅适用于登录用户:

@if (Auth::user())
<script>
$(function() {
setInterval(function checkSession() {
$.get('/check-session', function(data) {
// if session was expired
if (data.guest) {
// redirect to login page
// location.assign('/auth/login');

// or, may be better, just reload page
location.reload();
}
});
}, 60000); // every minute
});
</script>
@endif

关于javascript - Laravel:在 ajax 请求 session 过期后重定向到登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29072999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com