Php 拉维5表格及&;过期疗程-是否有拉维咖啡因的替代品?
因此,根据我在laravel 5.2中的经验,发生了以下情况:Php 拉维5表格及&;过期疗程-是否有拉维咖啡因的替代品?,php,laravel,session,laravel-5,Php,Laravel,Session,Laravel 5,因此,根据我在laravel 5.2中的经验,发生了以下情况: 在浏览器中,将显示带有(ajax)表单的页面 用户执行其他操作(例如回家) 当用户稍后返回并且会话过期时,他会收到一条错误消息,表明vrsf令牌无效(VerifyCsrfToken.php) 用户感到困惑 到目前为止,我还没有找到任何解决这个问题的内置解决方案。我正在使用,但感觉有点奇怪,我必须使用第三方库来解决这个基本问题。也许我错过了什么?您可以延长会话的到期时间。打开config/session.php并将“生存期”更改为
- 在浏览器中,将显示带有(ajax)表单的页面
- 用户执行其他操作(例如回家)
- 当用户稍后返回并且会话过期时,他会收到一条错误消息,表明vrsf令牌无效(VerifyCsrfToken.php)
- 用户感到困惑
到目前为止,我还没有找到任何解决这个问题的内置解决方案。我正在使用,但感觉有点奇怪,我必须使用第三方库来解决这个基本问题。也许我错过了什么?您可以延长会话的到期时间。打开config/session.php并将“生存期”更改为您希望允许会话有效的时间
或者,在Exceptions/Handler.php中,侦听VerifyCsrfToken exception并向用户显示他需要刷新页面、再次登录等,我认为这是更好的选择,因为增加会话生存期会增加安全风险 您不必为此使用第三方软件包。它所做的只是在页面末尾添加一些JavaScript,在给定的时间间隔内通过Ajax ping服务器,以保持会话的活动性 CSRF令牌是通用安全概念的一部分。但是如果你确定你的任务不需要它,你可以告诉特定的路线不要麻烦它。在
/app/Http/Middleware/VerifyCsrfToken.php
中,您有一个数组,可以在其中添加要从CSRF验证中排除的路由:
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
但这可能不是最好的主意,因为您正在围绕一个安全概念工作
这只会防止抛出tokenmischException
。如果您要发布到的控制器仍然依赖于活动会话,例如。G如果它需要登录用户或其他什么,这也帮不了你
因此,有几种解决方案:
- 关闭该路由的CSRF验证。如果你知道自己在做什么,而且会议也无关紧要,那么就这样做
- 挂接到
,并向用户返回一条格式良好的消息,说明他们的会话已过期,并要求他们重新加载页面(我想这是推荐的方式)\lightlight\Session\tokenmischException
- 延长会话生命周期-正如@TheFallen已经说过的,显然不是最好的主意
- 使用第三方软件包,或者自己添加一小段JavaScript