verifycsrftoken tokenmismatchexception disable deshabilitar delete crs avoid laravel-5 laravel-routing laravel-middleware

laravel 5 - tokenmismatchexception - Desactivar temporalmente/eludir Middleware



skip csrf token laravel (3)

Aquí hay un paquete en el que trabajé después de tener el mismo problema.

https://github.com/moon0326/FakeMiddleware

En mi aplicación, implementé un servidor OAuth2 ( oauth2-server-laravel ) en combinación con un paquete de autenticación personalizado ( Sentinel by Cartalyst ).

En mi routes.php:

Route::group([''before'' => ''oauth''], function() { // ... some routes here }

Por lo tanto, la solicitud debe proporcionar un encabezado de autorización o la aplicación se cierra con una OAuthException.

Ahora quiero probar mis controladores. Así que tengo que sembrar mi base de datos con una sesión de OAuth y un token de acceso para cada prueba. A continuación, sobrescriba el método call() de TestCase y establezca el encabezado HTTP-Authorization con el token de portador.

¿Hay alguna forma de deshabilitar o eludir middleware (en mi caso solo para pruebas unitarias)?

En Laravel 4 se llamaron filtros de ruta y, de todos modos, se desactivaron en el entorno de prueba. También puede habilitarlos / deshabilitarlos manualmente con Route::enableFilters() .


La única respuesta que se me ocurrió fue poner un bypass en el middleware propiamente dicho. Por ejemplo:

public function handle($request, Closure $next) { // Don''t validate authentication when testing. if (env(''APP_ENV'') === ''testing'') { return $next($request); } // ... continue on to process the request }

No me gusta la idea de hacer que el middleware dependa del entorno de la aplicación, pero no pude ver ninguna otra opción.


Aparentemente con el lanzamiento de Laravel 5.1 ayer se disableMiddleware() un método disableMiddleware() a la clase TestCase , que ahora hace exactamente lo que yo quería.

Problema resuelto. :)