我在Laravel 4.2 Route::when('*', 'csrf', ['post']);
中有这个,它将csrf验证插入到所有帖子中,如何移植到Larevel 5.2?
这是我自己的csrf,没有使用Laravel提供的默认值:
<?php
namespace App\Http\Middleware;
use Closure;
use Input;
class VerifyCsrfToken1
{
public function handle($request, Closure $next)
{
$token = $request->ajax() ? $request->header('X-CSRF-Token') : $request->input('_token');
if ($request->session()->token() === $token) {
return $next($request);
}
throw new TokenMismatchException;
}
}
我创建了我的个人csrf中间件,但我不知道如何在所有帖子请求上附加它们
我希望通过Route
的外观将其附加到所有帖子。 (file routes.php)
谢谢:)
答案 0 :(得分:2)
Laravel 5将中间件连接起来有点不同,你不会通过Request
外观这样做。
您希望首先将中间件注册为全局。打开app/Http/Kernel.php
并将其添加到全局$middleware
数组。
protected $middleware = [
VerifyCsrfToken1::class
...
然后在中间件类中,检查它是否正在处理POST请求。如果没有,请让它直接传递请求而不做任何事情。
if($request->method() != "POST") {
// Move right along
return $next($request);
}
旁注:正如您所说,Laravel已经有了VerifyCsrfToken
个中间件。如果可能的话,我建议尝试调整它。