質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

1回答

2594閲覧

[Eccube3] $app->isGranted('ROLE_USER') で AuthenticationCredentialsNotFoundException が発生

monumonu

総合スコア32

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2019/04/22 14:55

Eccube3のバージョン: 3.0.16

Eccube本体のソースは触ってないのですが、
プラグイン側の event.yml で下記のイベントを張り

front.shopping.confirm.initialize: - [onShoppingConfirmInit, NORMAL]

 
ログインしている状態で、 onShoppingConfirmInit()イベントにて
$app->isGranted('ROLE_USER') を実行すると、下記例外が発生してしまいます。。。

[2019-04-22 00:00:54,012884] front.ERROR [517d038a] [1cd34d92] [NULL] [LogListener:onKernelException:115] - Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException: The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL. (uncaught exception) at /var/www/html/eccube/vendor/symfony/security/Core/Authorization/AuthorizationChecker.php line 57 {"exception":"[object] (Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException(code: 0): The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL. at /var/www/html/eccube/vendor/symfony/security/Core/Authorization/AuthorizationChecker.php:57)"} [POST, /shopping/confirm, 192.168.10.20, https://192.168.10.20/shopping, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36]

 
symfonyのソースを追っていくと、
vendor/symfony/security/Core/Authorization/AuthorizationChecker.php#isGranted()

$this->tokenStorage->getToken() で取得したトークンがnullなため起きているようです。

ちなみに、今回は app/config/security.yml は用意してないです。

以前は普通に $app->isGranted('ROLE_USER') を問題なく実行できていたため、何が起きているかわかってないです。。

何かわかりましたら、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

原因がわかりました。。。

仕様上、他ベンダーのプラグインを入れていたのですが
そいつがrequestイベントにてinitializeイベントをdispatchしていたため

自分たちが作成していたinitializeイベントの方で実行していた $app->isGranted('ROLE_USER') がエラーとなっていたようです。

requestイベント中なのに $app->isGranted('ROLE_USER') を叩いている状態でした。

実質、そちらのユーザー情報は利用しなくなった(我々側のプラグインの仕様が変わった)ため、
ユーザー情報を読み込まないよう修正して難を逃れました。。

投稿2019/05/09 05:39

monumonu

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問