"方法不允许"会话到期后返回ajax调用

时间:2017-09-07 06:58:54

标签: jquery ajax laravel session

我有一个表格,其中我显示每个类别的类别列表和删除按钮。删除操作使用以下路由通过ajax调用工作:

Route::delete('category/delete/{id}','CategoriesController@destroy')->name('category.delete');

工作正常。但后来我打开了页面并在页面仍然打开后回来了一段时间。现在,当我尝试删除某个类别时,我的控制器出现方法不允许错误。我认为这与会议过期有关。

我的问题是:
1.为什么会发生这种情况 2.如何处理此ON SERVER SIDE,以便在会话过期且用户尝试访问受保护路由(通过ajax)的情况下,服务器检测会话到期并向ajax调用发送特定响应或重定向用户登录页面。

我的ajax调用期望从服务器返回json类型。

谢谢,

1 个答案:

答案 0 :(得分:1)

当会话到期时,任何需要身份验证的路由都会重定向到/ login端点,因为只有get&post delete失败。

可能的解决方案:

  • 增加会话持续时间(默认为120分钟)
  • 添加一个jquery拦截器来检测浏览器窗口的401和window.location.reload()以使用户自己进入登录页面
  • 在脚本中放置一个计时器,每隔约5/10分钟左右“ping”一次服务器,从而导致会话爆炸