php - VerifyCsrfToken 中的 TokenMismatchException - Laravel 5.1

标签 php laravel laravel-5 laravel-routing laravel-5.1

我正在使用 Laravel 5.1 构建 REST API,但出现此错误:

TokenMismatchException in VerifyCsrfToken.php line 53:

这是我的routes.php:

Route::controller('city' , 'CityController' );

城市 Controller :

class CityController extends Controller
{  
   public function postLocalities()
  {
    $city = Input::get('cityName');
    $response = $city;
    return $response;
   }
}

这是我点击 URL 时错误的 Stacktrace http://localhost:8000/city/localities?cityName=bangalore用 POST 方法。

TokenMismatchException in VerifyCsrfToken.php line 53:

in VerifyCsrfToken.php line 53
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'),
array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in     
ShareErrorsFromSession.php line 54
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'),     
array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in     
StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'),   
array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in   
AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'),    
array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in     EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'),     
array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in     
CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'),   
array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54
at require_once('C:\Users\betaworks02\Documents\gharbhezoBackend\public\index.php') in server.php line 21

最佳答案

如果您正在构建 API,最好将 CRSF 中间件放置在每个路由的基础上,而不是将其作为全局中间件放置。要将其作为路由中间件,请转到“/app/Http/Kernel.php”文件。

/**
 * 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',
    //comment out to avoid CSRF Token mismatch error
    // 'App\Http\Middleware\VerifyCsrfToken',
];

/**
 * The application's route middleware.
 *
 * @var array
 */
protected $routeMiddleware = [
    'auth' => 'App\Http\Middleware\Authenticate',
    'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
    'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
    'cors' => 'App\Http\Middleware\CorsMiddleware',
    'api' => 'App\Http\Middleware\ApiMiddleware',
    'csrf' => 'App\Http\Middleware\VerifyCsrfToken'// add it as a middleware route 

现在你可以把它放在你需要的地方,例如

Route::get('someRoute', array('uses' => 'HomeController@getSomeRoute', 'middleware' => 'csrf'));

对于您不需要 CSRF token 匹配的情况,它现在应该可以正常工作。

关于php - VerifyCsrfToken 中的 TokenMismatchException - Laravel 5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32118400/

相关文章:

php - 使用 Laravel 和 Pest 测试多维数组

PHP LDAP 获取用户 SID

php - 存储注册状态不正常(始终存储值 "C",但如果注册已支付,则应存储 "I")

php - 您是否在Azure中启用了php_fileinfo扩展

php - 图片标签只在首页返回用户头像,其他页面不返回

php - 如何使用 Imagick/ImageMagick 调整 SVG 大小

php - Laravel 5 插入具有属性的数据透视表

php - 在 OR 上下文中使用多个 Laravel 作用域

php - 数据库中的 Laravel 错误报告

php - 使用 jQuery AJAX 从 Laravel 5 中的联系表单发送电子邮件