我注意到,在我的网站,一旦用户停留在页面上太长时间(通常需要几个小时),AJAX请求后会返回JSONmessage
的CSRF token mismatch.
有什么方法可以在控制器中检测到该错误,以便返回正确的错误消息(我知道我可以在前端逻辑中执行此操作,但是很高兴知道这一点)?
您可以使用路由过滤器执行此操作。
从laravel文档中:
路由过滤器提供了一种限制访问给定路由的简便方法,这对于在站点中创建需要身份验证的区域很有用。Laravel框架中包含几个过滤器,包括auth过滤器,auth.basic过滤器,guest虚拟机过滤器和csrf过滤器。这些位于app / filters.php文件中。
注意:在测试应用程序环境时,将禁用过滤器。
首先在服务提供商中定义路由过滤器:
Route::filter('csrf', function(){
if (Session::token() != Input::get('_token')) {
throw new Illuminate\Session\TokenMismatchException;
}
});
然后在您的路线中可以附加before
参数,例如:
Route::get('user', [
'before' => 'csrf',
'uses' => 'UserController@showProfile'
]);
// Ore if you have functional route
Route::get('user', [
'before' => 'csrf',
function(){
return 'Response here';
}
]);
希望这对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句