EC-CUBE Lab
produced by Cajiya
EC-CUBEに関するカスタマイズ方法やトラブルへの対処方法を発信

ログアウト時のリダイレクト先をカスタマイズする方法(EventListener)

公開日: 2025年09月23日 | 更新日: 2025年11月01日
ログイン・ログアウト 情報構造・ルーティング設計 EC-CUBE 4.1系 / Symfony 4.4 イベント購読

要望や症状

EC-CUBE 4.1系において、ログアウトボタンを押した際にトップページではなく、特定のページ(user_data/page)にリダイレクトしたい。

理由や原因

EC-CUBE 4系では、ログアウト処理のリダイレクト先がデフォルトでトップページに設定されている。3系とは異なり、設定ファイルの構造や処理フローが変更されているため、同様の手法では対応できない。

ログアウト処理は、SecurityControllerまたはSymfonyのセキュリティ機能によって制御されており、リダイレクト先の変更にはイベントリスナーまたはカスタマイズが必要となる。

解決策

Customizeディレクトリでのイベントリスナー実装

以下の手順でログアウト後のリダイレクト先を変更できる。

1. イベントリスナーの作成

// app/Customize/EventListener/LogoutSuccessListener.php
<?php

namespace Customize\EventListener;

use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Security\Http\Event\LogoutEvent;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

class LogoutSuccessListener
{
    private $urlGenerator;
    
    public function __construct(UrlGeneratorInterface $urlGenerator)
    {
        $this->urlGenerator = $urlGenerator;
    }
    
    public function onLogout(LogoutEvent $event)
    {
        // カスタムページのルート名を指定
        $redirectUrl = $this->urlGenerator->generate('user_data_custom_page');
        $response = new RedirectResponse($redirectUrl);
        $event->setResponse($response);
    }
}

2. サービス定義の追加

# app/Customize/Resource/config/services.yaml
services:
    Customize\EventListener\LogoutSuccessListener:
        arguments:
            - '@router'
        tags:
            - { name: kernel.event_listener, event: Symfony\Component\Security\Http\Event\LogoutEvent, method: onLogout }

3. カスタムページのルート確認

user_data/pageで作成したページのルート名を確認し、上記コードのuser_data_custom_page部分を実際のルート名に置き換える。

bin/console debug:router | grep user_data

4. キャッシュのクリア

bin/console cache:clear

免責事項

本記事に掲載しているコードや手順は、執筆時点での情報および特定の環境下での動作確認に基づいています。 EC-CUBEのバージョン、サーバー環境、導入済みプラグインとの競合などにより、予期せぬ不具合が発生する可能性があります。

本記事の内容を実行した結果、生じた損害(データの消失、サイトの停止、機会損失など)について、当サイトおよび管理者は一切の責任を負いかねます。 実装にあたっては、必ずバックアップを取得し、検証環境(テスト環境)での動作確認を行った上で、ご自身の責任において実施してください。

この記事は参考になりましたか?

著者プロフィール: 株式会社カジヤ

当社はWeb業界の専門家として、培った経験や技術、自社事業を通して得た知見を土台に、 お客様の事業の成長を後押しすることを提供価値として活動する、Web事業の成長支援会社です。 EC-CUBE公式のパートナー制度「EC-CUBE インテグレートパートナー」に登録してしており、上位11%にあたる「ゴールドランク」に認定された実績があり、新しい通販サイトの構築から、カスタマイズ、リニューアルまで幅広く対応します。

ログイン・ログアウト の関連記事

ログイン・ログアウト 機能不動作 EC-CUBE 4系全般
ログアウト時のリダイレクト先をカスタマイズする方法(security.yaml)

EC-CUBE 4系において、ログアウトボタンを押した際にトップページではなく、特定のページにリダイ...

👍 0 / 👎 0 2025年09月23日
ログイン・ログアウト EC-CUBE 4.2系 / Symfony 5.4 設定変更
自動ログインの有効期限を1時間から変更する方法

EC-CUBE 4.2系では、会員ログイン時に「次回から自動的にログインする」をチェックして自動ログ...

👍 0 / 👎 0 2025年09月23日

イベント購読 の関連記事

管理画面共通 セキュリティ強化 EC-CUBE 4系全般
ロードバランサー経由でも管理画面IP制限を適用させるカスタマイズ方法

ロードバランサー配下にEC-CUBEサーバを構築している環境で、管理画面IP制限設定を実施しようとす...

👍 0 / 👎 0 2025年10月12日
購入フロー 通知/コミュニケーション EC-CUBE 4系全般
EC-CUBE4で購入通知をSlackで送信するカスタマイズ方法

EC-CUBE 4系において、注文が発生した際に運用チームへSlackで自動通知を送りたいという要望...

👍 0 / 👎 0 2025年09月23日