根据我的经验,即使在laravel 5.2中,也会发生以下情况:
到目前为止,我没有找到针对此问题的任何内置解决方案。我正在使用https://github.com/GeneaLabs/laravel-caffeine但是我必须使用第三方库来解决这个基本问题感觉有点奇怪。也许我错过了什么?
答案 0 :(得分:1)
您可以增加会话到期的时间。打开 config / session.php 并将' life' 更改为您希望会话有效的时间。
或者在 Exceptions / Handler.php 中侦听 VerifyCsrfToken 异常并向用户显示他需要刷新页面,再次登录等等,我认为是更好的选择,因为增加会话生命周期会增加安全风险。
答案 1 :(得分:1)
您不必使用第三方软件包。它所做的就是在页面末尾添加一些JavaScript,在给定的时间间隔内通过Ajax ping服务器,以保持会话处于活动状态。
CSRF-Token是常见安全概念的一部分。但是如果你确定你不需要那个任务,你可以告诉具体的路线不要打扰它。在/app/Http/Middleware/VerifyCsrfToken.php
中,您有一个数组,您可以在其中添加要从CSRF验证中排除的路由:
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
但这可能不是最好的主意,因为你正在研究安全概念。
这只会阻止TokenMismatchException
被抛出。如果您要发布的控制器仍依赖于活动会话,例如: G。如果它需要登录用户或其他东西,这也无济于事。
所以,有几个解决方案:
\Illuminate\Session\TokenMismatchException
并向用户返回一个格式正确的消息,告知他们的会话已过期并要求他们重新加载页面(我猜这将是推荐的方式)