Laravel 有没有办法获取新的 CSRF token ,即使当前 token 可能已过期?我希望能够在不更新用户界面的情况下获得新 token 。
我一直在尝试使用 Visibility API 来检查浏览器(仅限移动用户)是否再次激活,但我很快发现这并不是真正的问题。如果 token 已过期,到目前为止我无法获取新 token ,因为我收到 token 不匹配异常。我想要一个新的 token ,忽略任何不匹配异常,将其放入 DOM 中并让用户再次继续。
我的用户可能会经历很长的空闲时间,但是当他/她重新激活移动页面时,我希望用户能够从他/她离开的地方继续,而不需要让他们重新加载页面并提供初始数据(例如名称)再次。
最佳答案
您可以在需要 token 刷新的页面上使用此脚本,而无需刷新页面:
<script type="text/javascript">
var csrfToken = $('[name="csrf_token"]').attr('content');
setInterval(refreshToken, 3600000); // 1 hour
function refreshToken(){
$.get('refresh-csrf').done(function(data){
csrfToken = data; // the new token
});
}
setInterval(refreshToken, 3600000); // 1 hour
</script>
在你的routes/web.php中
Route::get('refresh-csrf', function(){
return csrf_token();
});
您还可以在某些路由上禁用 csrf_token 验证,创建一个中间件,示例如下:
关于laravel - 获取新的 csrf token ,即使当前 token 已过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45738364/