php - 如何使用ajax在LARAVEL中获取新的CSRF token

标签 php jquery ajax laravel-5

我创建了一个具有很多字段的表单,用户可以在其中创建无限的字段。 如果用户在其上花费更多时间,CSRF token 就会过期,并且当他单击提交时,LARAVEL 将返回错误 CSRF token 不匹配。 那么如何使用 ajax 调用获取新的 CSRF token ,以便定期更新 CSRF? 我无法刷新或重新加载表单。

最佳答案

更新;虽然下面回答了所要求的内容,但是:

  • session 的所有页面共享完全相同的 CSRF token (至少在 Laravel 中),
  • 因此,如果一个浏览器选项卡创建了一个新 token ,
  • 所有其他选项卡突然出现无效 token !!

旧答案

通过使用此代码,您可以在登录后使用 regenerate() 方法并在响应中返回新的 csrf_token() 来获取新 token 。

函数内的 Controller :

public function refreshToken(Request $request)
{
     session()->regenerate();
     return response()->json([
        "token"=>csrf_token()],
      200);

}

JavaScript:

$.ajax({
    url: "{{url('refresh-token')}}",
    type: 'get',
    dataType: 'json',
    success: function (result) {
        $('meta[name="csrf-token"]').attr('content', result.token);
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': result.token
            }
        });
    },
    error: function (xhr, status, error) {
        console.log(xhr);
    }
});

关于php - 如何使用ajax在LARAVEL中获取新的CSRF token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45668337/

相关文章:

php - 您如何看待这个解决方案而不是使用表名作为 PDO 参数?

javascript - JQuery Ajax PHP - 无法从 MySQL 获取数据

javascript - 使用 jQuery Ajax 发送 'pure' JSON 而不是多种形式

javascript - Codemirror 和 iFrame 问题

javascript - Bootstrap 导航丸 - 'active' 类在打开的模式中不起作用

javascript - 使用 JQuery $.get() 获取数据

javascript - 使用 AJAX 从 jQuery 向 Rails 服务器提交表单在 IE11 中不起作用

PHP ASP 分享会

python - PHP 相当于 Python 的 __name__ == "__main__"?

php - Codeigniter : variables scope when calling a view from within a view. 奇数