0
我需要過濾器在測試時啓用,因爲有些對我的應用邏輯非常重要,在我的測試設置中,我有Route::enableFilters();
現在問題是我添加了CSRF過濾器的頂部,現在我的測試正在打破。如何在測試時覆蓋或禁用特定的過濾器
有沒有辦法在測試時覆蓋或禁用CSRF過濾器?
我需要過濾器在測試時啓用,因爲有些對我的應用邏輯非常重要,在我的測試設置中,我有Route::enableFilters();
現在問題是我添加了CSRF過濾器的頂部,現在我的測試正在打破。如何在測試時覆蓋或禁用特定的過濾器
有沒有辦法在測試時覆蓋或禁用CSRF過濾器?
您只需關閉監聽器,這個過濾器:
Event::forget('router.filter: csrf');
的一種方式(但無可否認不是最優雅的)將是您的CSRF過濾器來檢查「測試」環境:
Route::filter('csrf', function($route, $request)
{
// are we in the testing environment? if so, don't bother with the
// token value
if(App::environment()=="testing")
return;
// check the CSRF token
if (Session::token() != Input::get('_token'))
throw new \Illuminate\Session\TokenMismatchException;
});
不錯,謝謝! – silkAdmin