본문 바로가기

Slim CSRF Protection Slim 3 은 CSRF (Cross-Site Request Forgery) 로부터 어플리케이션을 보호하기 위해 독립적인 slimphp/Slim-Csrf PHP 컴포넌트를 사용할 수 있다.이 컴포넌트는 클라이언트 측의 HTML form 으로부터 오는 각 POST 요청에 대해 유일한 토큰을 생성한다. 설치 프로젝트 루트 디렉토리에서 다음 bash 명령을 실행한다. $ composer require slim/csrfcs 사용 slimphp/Slim-Csrf 컴포넌트는 어플리케이션 미들웨어를 포함한다. 다음과 같이 컴포넌트를 추가한다. // Add middleware to the application$app = new \Slim\App;$app->add(new \Slim\Csrf\Guard); // Creat..
Slim HTTP Caching Slim 3 는 HTTP 캐싱을 위해 독립적인 slimphp/Slim-HttpCache PHP 컴포넌트를 사용할 수 있다.이 컴포넌트를 사용하면, 어플리케이션 출력이 클라이언트 측 캐시에 얼마나 유지될 것인지 제어하는 Cache, Expires, ETag, Last-Modified 헤더들을 포함하는 응답을 생성하고 반환할 수 있다. 설치 프로젝트 루트 디렉토리에서 다음 bash 명령을 실행한다. $ composer require slim/http-cachecs 사용 slimphp/Slim-HttpCache 컴포넌트는 서비스 제공자와 어플리케이션 미들웨어를 포함하며 다음과 같이 추가할 수 있다: // Register service provider with the container$container = ne..
Slim Templates Slim 은 MVC 프레임워크 같은 뷰 레이어가 없다. Slim 에서 "View" 란 HTTP 응답이다.각 Slim 어플리케이션 라우트는 적절한 PSR-7 응답 객체를 준비하고 반환한다.Slim 프로젝트는 PSR-7 Response 객체에 템플릿을 적용(render)하도록 Twig-View 와 PHP-View 컴포넌트를 제공한다. The slim/twig-view component Twig-View PHP 컴포넌트는 어플리케이션에 Twig 템플릿을 렌더링해 준다.이 컴포넌트는 패키지리스트에서 이용 가능하며 Composer 로 쉽게 설치할 수 있다. $ composer require slim/twig-viewcs 설치하였으면, Slim app 의 컨테이너에 서비스로 컴포넌트를 등록한다.
Slim Retrieving Current Route 어플리케이션의 현재 라우트에 접근할 필요가 있다면, 'route' 매개변수로 요청 클래스의 getAttribute 메소드를 호출하고 Slim\Route 클래스의 인스턴스인 현재 라우트를 반환할 것이다.그것으로부터 getName() 을 이용하여 라우트의 이름을 얻거나 getMethods() 로 이 라우트에 제공되는 메소드를 얻을 수 있다.app 의 미들웨어로부터 라우트에 접근하려면 설정에서 determineRouteBeforeAppMiddleware 를 true 로 지정하거나 getAttribute('route') 가 null 을 반환해야 한다.라우트는 항상 라우트 미들웨어에서 사용 가능하다. use Slim\Http\Request;use Slim\Http\Response;use Slim\App; $app..
Slim Retrieving IP address 현재 클라이언트의 IP 주소를 검색하는 가장 좋은 방법은 rka-ip-address-middleware 같은 미들웨어 컴포넌트를 사용하는 것이다. 설치 $ composer require akrabat/rka-ip-address-middlewarecs 사용 신뢰가는 프록시 리스트(varnish servers 등)를 제공하는 App 으로 미들웨어를 등록한다. $checkProxyHeaders = true;$trustedProxies = ['10.0.0.1', '10.0.0.2'];$app->add(new RKA\Middleware\IpAddress($checkProxyHeaders, $trustedProxies)); $app->get('/', function ($request, $response, $args..
Slim Trailing / in route patterns Slim 은 URL 패턴 끝에 슬래시가 있는 것과 없는 것을 다르게 처리한다./user 와 /user/ 는 다른 콜백을 가질 수 있다.슬래시로 끝나지 않는 모든 URL 에 슬래시를 붙여 리다이렉트 하려면 다음과 같이 미들웨어를 추가한다: use Psr\Http\Message\RequestInterface as Request;use Psr\Http\Message\ResponseInterface as Response; $app->add(function (Request $request, Response $response, callable $next) { $uri = $request->getUri(); $path = $uri->getPath(); if ($path != '/' && substr($path, -1..
Slim 404 405 Error Handler 404 Not Found Handler Slim 어플리케이션에 HTTP 요청 URI 와 매칭되는 라우트가 없다면 Not Found Handler 를 호출하고 HTTP 클라이언트에 HTTP/1.1 404 Not Found 응답을 반환한다. Default Not Found handler각 Slim 어프릴케이션은 기본 Not Found handler 를 가진다.이 핸들러는 Response 상태를 404 로, Content type 을 text/html 로 지정하고, Response 본문에 간단한 설명을 작성한다. Custom Not Found handlerSlim 어플리케이션의 Not Found handler 는 Pimple 서비스이다. 어플리케이션 컨테이너로 Pimple 의 팩토리 메소드를 사용자 정의하여 ..
Slim System Error Handler 각 Slim 프레임워크 어플리케이션은 캐치되지 않은 모든 PHP 예외를 받는 에러 핸들러를 가진다.이 에러 핸들러는 HTTP 클라이언트에 보내질 적절한 Response 객체를 준비하고 반환하는 등 HTTP 요청과 응답도 다룰 수 있다. 기본 에러 핸들러 페이지에 오류가 있을 경우 Response 상태 코드는 500 으로 지정되고, Content type 은 text/html, 본문에는 일반 에러 메시지가 추가된다.이것은 런칭된 어플리케이션에서 적절하지 않을 것이므로, 이 에러 핸들러를 구현하는 것을 권장한다.displayErrorDetails 세팅을 true 로 하여, 기본 에러 핸들러로 상세한 에러 정보를 나타낼 수 있다. $configuration = [ 'settings' => [ 'displayE..