필터 (Filters)
요청 전/후에 공통 로직을 처리하는 미들웨어 역할을 합니다.
1
필터 동작 방식
요청 흐름:
요청 → Before Filter → Controller → After Filter → 응답
// app/Filters/AuthFilter.php
class AuthFilter implements FilterInterface
{
// 컨트롤러 실행 전 호출
public function before(RequestInterface $request, $arguments = null)
{
if (! session()->get('filter_logged_in')) {
// null이 아닌 값을 반환하면 컨트롤러 실행이 중단됩니다
return redirect()->to(base_url('examples/filters/login'))
->with('error', '로그인이 필요합니다.');
}
// null 반환 시 → 컨트롤러 계속 실행
}
// 컨트롤러 실행 후 호출
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
// 응답 헤더 추가, 로깅 등
}
}
2
필터 등록 & 적용
app/Config/Filters.php — 별칭 등록
public array $aliases = [
// ... 기본 필터들 ...
'auth-example' => \App\Filters\AuthFilter::class,
];
app/Config/Routes.php — 특정 라우트에 적용
// 단일 라우트에 필터 적용
$routes->get('examples/filters/protected', 'Examples\Filters::protectedPage',
['filter' => 'auth-example']
);
// 라우트 그룹 전체에 적용
$routes->group('admin', ['filter' => 'auth'], function ($routes) {
$routes->get('dashboard', 'Admin::dashboard');
});
// Filters.php에서 URI 패턴으로 전역 적용
public array $filters = [
'auth' => ['before' => ['admin/*']],
];