我们有一个自定义的登录弹出模型。 我们单击登录名,然后弹出窗口进入图片。 csrf-token生成,但是当他什么都不做时,则在一段时间后出现令牌不匹配。并引发异常。 我需要一些想法在一段时间后刷新令牌,否则它永远不会过期。
你能帮我吗?
答案 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();
});