Несоответствие токена Laravel 5.2 и ошибка промежуточного программного обеспечения

Я использую Laravel 5.2 и выполняю всю аутентификацию вручную. Итак, хотя все работает, но я получаю ошибку token mismatch, и причина в том, что я не передаю свои маршруты через промежуточное программное обеспечение web в своем файле маршрутов:

Route::group(['middleware'=>['web']],function (){
    Route::get('/', function () {
        return view('welcome');
    })->name('home');
});
Route::social();

где Route::social();

public function social() {

    $this->post('/signup',['uses'=>'UserController@postSignUp','as'=>'signup']);
    $this->post('/signin',['uses'=>'UserController@postSignIn','as'=>'signin']);
    $this->get('/dashboard',function() {
        return view('dashboard');
    })->middleware('auth');
}

Но если я перемещу Route::social(); в группу промежуточного программного обеспечения для Интернета, он не будет считать ошибки и поэтому вернет пустые ошибки, даже если они есть. Как мне с этим справиться? Я хочу обе вещи!

У меня есть поле токена в моей форме, использующее {!! Form::token() !!}


person Jaskaran Singh Puri    schedule 29.12.2016    source источник


Ответы (1)


Вероятно, вы вручную добавляете в представление массив $error, web промежуточное ПО будет делать то же самое, поэтому оно будет перезаписано. Группа промежуточного программного обеспечения web включает \Illuminate\View\Middleware\ShareErrorsFromSession, который создает переменную ошибки в представлениях с ошибками проверки.

Есть два способа исправить это. Один из них — включить только \App\Http\Middleware\VerifyCsrfToken< /a> промежуточное ПО для этого маршрута. Другой, который я бы предпочел, — добавить маршрут в группу промежуточного ПО web, но использовать другое имя для вашего массива с ошибками.

person Jerodev    schedule 29.12.2016