gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:52:51 24 4
gpt4 key购买 nike

我创建了一个具有很多字段的表单,用户可以在其中创建无限的字段。如果用户在其上花费更多时间,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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com