2015-03-12 4 views
1

Это appening то, что очень странно:Laravel 5 Токен рассогласования по запросу POST

Я реализующий в Laravel 5, очередь сообщений Железа для того, чтобы отличаться запросом, от длительных задач казней. Как только я ввел сообщение в очередь Iron, он отправляет запрос POST на предопределенный маршрут, чтобы разбудить длительный процесс (подход Push Queue).

Я этот маршрут файла:

Route::post('queue/receive', function() 
    { 
     //start long task exec 
     return Queue::marshal(); 
    }); 

/* garantisco il logout agli utenti*/ 
Route::get('auth/logout', 'Auth\[email protected]'); 

/* redirect degli utenti loggati */ 
Route::group(['middleware' => 'guest'], function() 
{ 

    Route::get('/', '[email protected]'); 

    Route::controllers([ 
     'auth' => 'Auth\AuthController', 
     'password' => 'Auth\PasswordController', 
    ]); 
}); 

Route::group(['middleware' => 'auth'], function() 
{ 
    Route::get('home', '[email protected]'); 
}); 

Первый маршрут определяется это конечная точка IronMQ позвонит. Я знаю, что несоответствие токенов является популярной проблемой, использующей промежуточное ПО VerifyCsrfToken (то же, что и фильтр в L4). Невероятно, что я отключил это промежуточное программное обеспечение, но проблема не устранена. Это промежуточное программное мое ядро ​​в:

class Kernel extends HttpKernel { 

    /** 
    * The application's global HTTP middleware stack. 
    * 
    * @var array 
    */ 

    protected $middleware = [ 
     'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', 
     'Illuminate\Cookie\Middleware\EncryptCookies', 
     'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 
     'Illuminate\Session\Middleware\StartSession', 
     'Illuminate\View\Middleware\ShareErrorsFromSession', 
     //'LabelCreator\Http\Middleware\VerifyCsrfToken', 
    ]; 

    /** 
    * The application's route middleware. 
    * 
    * @var array 
    */ 
    protected $routeMiddleware = [ 
     'auth' => 'LabelCreator\Http\Middleware\Authenticate', 
     'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 
     'guest' => 'LabelCreator\Http\Middleware\RedirectIfAuthenticated', 
    ]; 

} 

Как вы можете видеть, «VerifyCsrfToken» отключена, но тестирование запрос на почту с локального окр, теперь я получаю эту ошибку:

DecryptException in Encrypter.php line 142: 
Invalid data. 
in Encrypter.php line 142 
at Encrypter->getJsonPayload('') in Encrypter.php line 92 
at Encrypter->decrypt('') in IronQueue.php line 214 
at IronQueue->parseJobBody('') in IronQueue.php line 173 
at IronQueue->marshalPushedJob() in IronQueue.php line 159 
at IronQueue->marshal() 
at call_user_func_array(array(object(IronQueue), 'marshal'), array()) in QueueManager.php line 223 
at QueueManager->__call('marshal', array()) in Facade.php line 207 
at QueueManager->marshal() in Facade.php line 207 
at Facade::__callStatic('marshal', array()) in routes.php line 17 
at Queue::marshal() in routes.php line 17 
at RouteServiceProvider->{closure}() 
at call_user_func_array(object(Closure), array()) in Route.php line 153 
at Route->runCallable(object(Request)) in Route.php line 128 
at Route->run(object(Request)) in Router.php line 691 
at Router->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101 
at Pipeline->then(object(Closure)) in Router.php line 693 
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 660 
at Router->dispatchToRoute(object(Request)) in Router.php line 618 
at Router->dispatch(object(Request)) in Kernel.php line 210 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55 
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61 
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36 
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40 
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101 
at Pipeline->then(object(Closure)) in Kernel.php line 111 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84 
at Kernel->handle(object(Request)) in index.php line 53 

Я я попытался прокомментировать других посредников, но проблема не устранена. То, что делает железо, - это простой запрос POST для моей конечной точки, например, webhooks. В чем проблема? Я не думаю, что это проблема сеанса, потому что Iron - это простая служба третьей части, которая вызывает конечную точку, и если она остается «гостевым» клиентом для моего приложения, все в порядке.

Может ли кто-нибудь мне помочь? заранее спасибо

ответ

0

Я нашел проблему: я испытывал конечную точку в местный без полезной нагрузки запроса POST, поэтому расшифровка не работает должным образом, но нюхать, который посылает полезную нагрузку IronMQ, используя RequestBin (очень полезно инструмент), я добавил ту же полезную нагрузку в локальный запрос теста, и теперь он работает.

Надеюсь, это поможет :)

+0

Не могли бы вы рассказать мне, как вы это сделали? В настоящее время у меня такие же проблемы с IronMQ и Laravel. –

+0

@PeteHouston в чем проблема? – trullallero

+0

У меня есть TokenMismatchException, когда сообщение IronMQ отправляется в очередь. Поэтому мне удалось обработать его, исключив маршрут очереди из проверки токена CSRF. У вас есть лучшее решение? –

Смежные вопросы