這讓我瘋狂。無論是從Laravel表單還是從AJAX,我都會在每個POST中獲取標記不匹配。我添加了一些代碼來過濾,以顯示我的會議與_token:CSRF令牌不匹配Laravel 4
Route::filter('csrf', function()
{
if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
$token = Input::has('_token') ? Input::get('_token') : '';
$sessionToken = Session::token();
if ($sessionToken != $token)
{
$message = 'Token mismatch';
// This one is for debug purposes only
return Response::json(['flash' => "$message; session: $sessionToken ; yours : $token"], 401);
return Response::json(['flash' => $message], 401);
}
}
});
這裏的登錄表單:
{{ Form::open(array('route' => 'sessions.store')) }}
<div class="form-group">
{{ Form::label('email', 'Email Address') }}
{{ Form::text('email', '', array('placeholder' => '[email protected]', 'class' => 'form-control')) }}
</div>
<div class="form-group">
{{ Form::label('password', 'Password') }}
{{ Form::password('password', array('placeholder' => 'Enter your password', 'class'=>'form-control')) }}
</div>
<div class="form-group">
{{ Form::submit('Sign in', array('class' => 'btn login'))}}
<a href="{{{ URL::to('session/registration') }}}" class="btn signup">Create an Account</a>
</div>
{{ Form::close() }}
例如登錄時,這裏是令牌不匹配的閃光燈,我得到:
{"flash":"Token mismatch; session: uN3sd8PNWUfgTuqc1RZrRfXgpGpHOEKkCtoo3XVX ; yours : Ybmn6u80rLpxIcGdahd7KT2eR6WmcaPN28arZ9kg"}
當app/config/session.php設置爲'apc'時發生這種情況。當它被設置爲「原生」或「cookie」時,一切都很好。我將緩存設置爲'apc',這是我們服務器上的緩存引擎。
想法?
嗨固定這一點。你有沒有找到這個解決方案?只有當我嘗試訪問其他電腦中的網站時纔會發生這種情況。 –
奇怪的事情發生在我身上,我只是清除了Chrome緩存,它現在可以工作。 – SSR