バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yumbo
投稿日時: 2019/11/15 20:01
対応状況: 解決済
半人前
登録日: 2019/11/14
居住地:
投稿: 13
ログアウト時に任意の処理を実行したい
[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
居住地:
投稿: 2085
Re: ログアウト時に任意の処理を実行したい
ご指摘の通り、security.yamlのfirewallsで、customerのlogout部分にsuccess_handler
を追加してやれば実装できると思います。

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


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

yumbo
投稿日時: 2019/11/19 11:54
対応状況: −−−
半人前
登録日: 2019/11/14
居住地:
投稿: 13
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
居住地:
投稿: 2085
Re: ログアウト時に任意の処理を実行したい
記事のコード部分におかしいところがありました。
本文の方が正しく、logout:の箇所に記載するのは下記になります。

success_handler: eccube.security.logout_success_handler

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

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

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

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


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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