ファンクショナルテストなどを書く際に、authフィルタは活かしたいけど、csrfフィルタは外したいという場合があります。
下記のようにEvent::forget()
で、該当フィルタのイベントを削除すると、該当フィルタだけを外すことができます。
Route::enableFilters(); // テストでフィルタを有効化
Event::forget('router.filter: csrf'); // csrfフィルタを削除
'router.filter: ' + フィルタ名
で、イベントを指定します。(フィルタ名の前には半角スペースが必要)
フィルタ名には、app/filters.php
で定義しているRoute::filter()
の第一引数です。
Route::filter('csrf', function () {
if (Session::token() != Input::get('_token')) {
throw new Illuminate\Session\TokenMismatchException;
}
});