【发布时间】:2015-04-15 01:38:29
【问题描述】:
我有一个登录用户可以访问我的 JavaScript 应用程序。
在初始化期间,应用会发送几个 Ajax 调用来收集一些信息。
有时,我会说大约十分之一,其中一个调用在我的一个路由过滤器中中止。
我对此的观察:
- 并非每次都发生
- 并不总是相同的路线(呼叫)
- 可能同时出现多个故障
- 一个简单的页面刷新重新触发调用,并且 因为这不是一个持续的失败,所以一切都会恢复正常...... 直到下一个故障。
这是有问题的过滤器:
我知道是这个,因为我用418 替换了403,它把“禁止”故障变成了“茶壶”故障。
Route::filter('auth-api', function() {
if (!Auth::check()) { App::abort(403, "Auth-api filter denied"); }
});
这是一个奇怪的错误:
所有/api/[whatever] 都经过相同的过滤器,在这种情况下,/api/assurances 死了,而其他的则正常。
【问题讨论】:
-
您使用的是什么会话驱动程序?
-
为了提供更多信息 - 您可能需要在检查前后记录每条路线的会话数据 - 并不断破坏您的路线,直到出现错误 - 然后查看日志显示的内容.它可能与以下内容有关:github.com/laravel/framework/issues/5416
-
我正在使用 eloquent 驱动程序,我会在回到我的开发环境后立即查看这项调查。此外,github问题似乎指出了我的问题。我会根据我的意见不断调整他们
-
雄辩的驱动程序是 auth 驱动程序 - 而不是 session 驱动程序。您使用的是哪个 session 驱动程序?文件、redis、memcache 等?也许尝试更改会话驱动程序以查看是否使用其他驱动程序出现问题。
-
我正在使用“本机”驱动程序。我无法使用“cookie”驱动程序重现该错误。根据我对 GitHub 线程的理解和这次经验,我认为这意味着基于文件的会话不适用于 Ajax 应用程序。您如何看待使用“cookie”驱动程序(或任何其他驱动程序)?