Laravel Form sessioin在几小时后过期
我正在使用Laravel 5.2。我遇到了问题。我在页面上有一个表单。问题是如果用户打开一个表单并离开2到3个小时,然后尝试提交TokenMismatch错误。它只发生在不在我本地的服务器上。Laravel Form sessioin在几小时后过期
我看过一些这方面的地方和解决办法是包装在web middlewear
路线。我做到了,但问题依然存在。我的路线是一样
Route::group(
[
'middleware' => ['dealer', 'web'],
'prefix' => 'dealer_panel'
],
function() {
//all routes here
});
编组我使用一个共享的主机为Laravel(我知道Laravel是不是共享hostings但我必须处理它)。这个错误从来没有发生在本地,但它总是发生在服务器上。我总是用Laravel Form helper
生成表格,如
{!! Form::open(['route' => ['dealer.profile.save'], 'id' => 'location_form', 'files' => true]) !!}
而且我已验证令牌生成。但在2,3小时后它会过期。如何阻止它打破/过期的,什么是处理这个问题
一般基于配置/会话一生 attribute.You可以增加,或作为一种替代令牌会议时间的方式你可以用下面的东西
1)在你的应用程序\例外检查。\处理器文件
public function render($request, Exception $e)
{
if ($e instanceof \Illuminate\Session\TokenMismatchException) {
return redirect()->back()->withInput()->with('token', csrf_token());
}
return parent::render($request, $e);
}
2)另一种方法是在你的中间件也可以创建一个新的令牌。
3)使用AJAX可以setInterval的时间reresh令牌
<meta name="csrf_token" content="{{ csrf_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>
Route::get('refresh-csrf', function(){
return csrf_token();
});
让我试试这个 –
,最好的办法是让他们重新登录。您可以处理令牌不匹配等,其使用csrf_token
public function render($request, Exception $e)
{
if ($e instanceof TokenMismatchException){
//Redirect to login form if session expires
return redirect('/')->with('login_fail',"Your session has expired, please try again. In the future, reload the current page if it has been open for several hours.");
}
return parent::render($request, $e);
}
网页只有有这个问题。我的应用中存在令牌过期时间的问题。摆脱这个问题最简单的方法是添加元标记,每n分钟刷新一次页面。不需要使用ajax或其他什么,页面将在令牌过期之前刷新,您不会再遇到这个问题。
例如,如果您的令牌在1小时内过期,则每55分钟左右更新一次页面。
这刷新页面Meta标记低于
<meta http-equiv="refresh" content="900">
价值900代表了我的例子中15分钟。 15分钟* 60秒= 900
您是否尝试过[this](http://stackoverflow.com/a/27330609/5139222)或[this](http://laravel.io/forum/01-30 -2015-laravel5-tokenmismatchexception-in-verifycsrftoken)? – KuKeC
@KuKeC是的,但没有好处。 –