我正在使用Lumen框架。爲流明上的特定路由禁用CSRF TokenMismatch
我有一個外部程序,每2分鐘發送一次HTTP POST請求。
我不需要任何意見,所以我想了解如何禁用Lumen中的CSRF TokenMismatch用於特定路線(我需要在其他某些路線上激活它)?
我正在使用Lumen框架。爲流明上的特定路由禁用CSRF TokenMismatch
我有一個外部程序,每2分鐘發送一次HTTP POST請求。
我不需要任何意見,所以我想了解如何禁用Lumen中的CSRF TokenMismatch用於特定路線(我需要在其他某些路線上激活它)?
您可以擴展VerifyCsrfToken
類並將您的路線添加到excludes
列表。
這個文件稱爲VerifyCsrfToken.php
添加到app/Http/Middleware
:
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Session\TokenMismatchException;
class VerifyCsrfToken extends \Illuminate\Foundation\Http\Middleware\VerifyCsrfToken {
protected $except_urls = [
// your excluded URLs go here
'example/route',
];
public function handle($request, Closure $next)
{
$regex = '#' . implode('|', $this->except_urls) . '#';
if ($this->isReading($request) || $this->tokensMatch($request) || preg_match($regex, $request->path()))
{
return $this->addCookieToResponse($request, $next($request));
}
throw new TokenMismatchException;
}
}
然後中間件添加到bootstrap/app.php
文件。你必須取消註釋$app->middleware()
然後將其添加到它:
$app->routeMiddleware([
'csrf' => 'Laravel\Lumen\Http\Middleware\VerifyCsrfToken',
]);
這是一個很好的答案。謝謝。讓我試試 – Zl3n
是的,這就是我們在評論中討論的方式 –
這是關於這個http://laravel.com/docs/5.1/routing#csrf-excluding-uris –
刪除全局'csrf'中間件和直接從您的控制器或路線中調用它。您也可以傳遞指定包含/排除方法的數組。 – revo
@revo謝謝。是[this](http://laravel.io/forum/11-14-2014-disabling-the-csrf-middleware-in-laravel-5)你在說什麼? – Zl3n
是的,只需從全局中間件中刪除條目並將其添加到路由中間件中即可。那麼你可以讓它具體路線 –