长时间后csrf令牌不匹配

时间:2019-07-10 10:01:53

标签: php session laravel-5 csrf

我们有一个自定义的登录弹出模型。 我们单击登录名,然后弹出窗口进入图片。 csrf-token生成,但是当他什么都不做时,则在一段时间后出现令牌不匹配。并引发异常。 我需要一些想法在一段时间后刷新令牌,否则它永远不会过期。

你能帮我吗?

2 个答案:

答案 0 :(得分:0)

默认会话时间为120分钟,可以在.env文件中使用SESSION_LIFETIME进行配置。

您可以执行以下其中一项操作:

a)将SESSION_LIFETIME设置为非常高的数字,例如35791394(68年)
b)当用户打开网站时,启动一个JavaScript计时器,该计时器在SESSION_LIFETIME分钟后刷新页面

答案 1 :(得分:0)

要在特定时间刷新令牌,您可以这样操作:

<html>
<head>
    <title>My website </title>
</head
<body>
<form method="POST" action="#">
    <input type="hidden" name="_token" id="csrf-token" value="{{ csrf_token() }}" />
</form>
    <script type="text/javascript">
        var csrfToken = $('#csrf-token').val();

        setInterval(refreshToken, 3600000); // 1 hour 

        function refreshToken(){
            $.get('refresh-token').done(function(data){
                csrfToken = data; // the new token
            });
        }

        setInterval(refreshToken, 3600000); // 1 hour 

    </script>
</body>
</html>

在您的路线文件中:

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

使用的来源:https://stackoverflow.com/a/31451123/3963382

相关问题