一尘不染

在Laravel中处理过期的令牌

php

在Laravel 5中处理过期令牌的最佳方法是什么

我的意思是我有一个页面,并且有一些执行ajax请求的链接。当页面加载时,它们工作正常,但是当我等待一段时间后,出现TOKEN MISMATCH错误。

现在,我必须刷新页面以使其重新工作。但是,我不想刷新页面。我想要某种方式来刷新令牌或其他解决方法以使其更正。

我希望你明白我的意思。


阅读 484

收藏
2020-05-29

共1个答案

一尘不染

解决方法是实际上每隔一定时间获取新令牌,否则您将违背csrf令牌的目的:

<html>
    <head>
        <meta name="csrf_token" content="{{ csrf_token() }}">
    </head>
    <body>
        <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>
    </body>
</html>

在拉拉韦尔路线

Route::get('refresh-csrf', function(){
    return csrf_token();
});

如果出现语法错误,我很抱歉,很久没有使用jquery了,但是我想您会明白的

2020-05-29