Symfony2でhttpアクセスをすべてhttpsへ投げるイベントリスナの書き方


Symfony2でhttpへのアクセスをすべてhttpsに投げるためのイベントリスナーの書き方です。
nginxとかで直接ぶん投げる方法も考えましたが、これが一番便利でした。

app/config/config.yml

    acme.yourbundle.event.request.listener:
        class: Acme\YourBundle\EventListener\RequestListener
        arguments:  
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

Acme/YourBundle/EventListener/RequestListener.php

<?php
namespace Acme\YourBundle\EventListener;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class RequestListener
{
    public function onKernelRequest(GetResponseEvent $event){
        $request = $event->getRequest();
        if (!$request->isSecure()) {
            $request->server->set('HTTPS', true);
            $request->server->set('SERVER_PORT', 443);
            $event->setResponse(new RedirectResponse($request->getUri()));
        }
    }
}
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です