バージョン選択

フォーラム

メニュー

オンライン状況

78 人のユーザが現在オンラインです。 (51 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 77
tsuyoshi もっと...

サイト内検索

質問 > フロント機能 > ログアウト時に任意の処理を実行したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yumbo
投稿日時: 2019/11/15 20:01
対応状況: 解決済
新米
登録日: 2019/11/14
居住地:
投稿: 10
ログアウト時に任意の処理を実行したい
[EC-CUBE] EC-CUBE4.0.1、新規インストール
[レンタルサーバ] AWS EC2
[OS] Amazon Linux
[PHP] 7.2
[データベース] MariaDB
[WEBサーバ] nginx
[導入プラグインの有無] 決済周りや郵送周り
[カスタマイズの有無] 会員データを自社サービスと共有させたり、ログイン状態を自社サイトと共有させようと実装してます。

[現象]
EC-CUBE4.0.1を使用しています。
Customerがフロントログアウト時に任意の処理を実行したいのですが、どのように定義すれば良いでしょうか?

単純に書き方がわかりません、security.yamlのcustomerのlogout部分に何かを定義してフックさせるような形でしょうか?

見識のある方、どうかよろしくお願いします。
umebius
投稿日時: 2019/11/16 5:36
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1398
Re: ログアウト時に任意の処理を実行したい
ご指摘の通り、security.yamlのfirewallsで、customerのlogout部分にsuccess_handler
を追加してやれば実装できると思います。

こちらで紹介していますので、よろしければ参考にしてください。
https://umebius.com/eccube/eccube4_handler_on_logout/


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー エンジニア募集中U-Mebius

yumbo
投稿日時: 2019/11/19 11:54
対応状況: −−−
新米
登録日: 2019/11/14
居住地:
投稿: 10
Re: ログアウト時に任意の処理を実行したい
umebius さん

こちらご教授いただき、ありがとうございます。
とても参考になりSymfony自体の仕組みの理解にも繋がるリンクありがとうございました。

ただ一点参考に処理を作ってみたのですが、エラーになってしまいました。
エラーの内容は下記です。
app/config/eccube/packages/security.yamlへの追加部分でエラーになっているように見えます。

(1/1) FatalThrowableError
Type error: Argument 3 passed to Symfony\Component\Security\Http\Firewall\LogoutListener::__construct() must implement interface Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface, instance of Eccube\Security\Http\Authentication\EccubeAuthenticationSuccessHandler given, called in /data/lovegreen-ec/eccube/var/cache/dev/ContainerHysygdo/getSecurity_Firewall_Map_Context_CustomerService.php on line 21

in LogoutListener.php line 46
at LogoutListener->__construct(object(TokenStorage), object(HttpUtils), object(EccubeAuthenticationSuccessHandler), array('csrf_parameter' => '_csrf_token', 'csrf_token_id' => 'logout', 'logout_path' => 'logout'))
in getSecurity_Firewall_Map_Context_CustomerService.php line 21
at require('/data/lovegreen-ec/eccube/var/cache/dev/ContainerHysygdo/getSecurity_Firewall_Map_Context_CustomerService.php')
in EccubeDevDebugProjectContainer.php line 2915
at EccubeDevDebugProjectContainer->load('getSecurity_Firewall_Map_Context_CustomerService.php')
in EccubeDevDebugProjectContainer.php line 5367
at EccubeDevDebugProjectContainer->ContainerHysygdo\{closure}()
in ServiceLocator.php line 64
at ServiceLocator->get('security.firewall.map.context.customer')
in FirewallMap.php line 164


何か対処法があればご教授いただければと思います。
よろしくお願いします。
umebius
投稿日時: 2019/11/19 17:33
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1398
Re: ログアウト時に任意の処理を実行したい
記事のコード部分におかしいところがありました。
本文の方が正しく、logout:の箇所に記載するのは下記になります。

success_handler: eccube.security.logout_success_handler

こちらで試してみていただけますか?
yumbo
投稿日時: 2019/11/19 17:58
対応状況: 解決済
新米
登録日: 2019/11/14
居住地:
投稿: 10
Re: ログアウト時に任意の処理を実行したい
umebius さん

こちらご教授いただいた、形に変更したところ動作が確認できました!

指定したファイルパスが違っていたのですね、すみません、よく確認せず。

とても助かりました、ありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は54,051名です
総投稿数は94,128件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2014
4
468
1908
5
yuh
1610
6
umebius
1398
7
red
1376
8
h_tanaka
939
9
fukap
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
780
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.