EC-CUBE4でフロント側でログアウトしたときに管理画面もログアウトする問題に対応する方法です。
注意!EC-CUBE4.0.1ではカート周りでバグりますので利用しないでください。
只今、ここで対応しています。
EC-CUBE4ではフロント側と管理側の両方でログインしていた場合、片方でログアウトすると両方ログアウトしてしまう問題があります。
これはSymfonyのSessionLogoutHandlerが有効化されていて、ログアウト時にセッションが破棄されてしまうことが影響しています。
なので、以下のようにsecurity.yamlに「invalidate_session」を無効化するよう指定してあげれば解決するかと思います。
security:
encoders:
# Our user class and the algorithm we'll use to encode passwords
# https://symfony.com/doc/current/security.html#c-encoding-the-user-s-password
Eccube\Entity\Member:
id: Eccube\Security\Core\Encoder\PasswordEncoder
Eccube\Entity\Customer:
id: Eccube\Security\Core\Encoder\PasswordEncoder
providers:
# https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
# In this example, users are stored via Doctrine in the database
# To see the users at src/App/DataFixtures/ORM/LoadFixtures.php
# To load users from somewhere else: https://symfony.com/doc/current/security/custom_provider.html
member_provider:
id: Eccube\Security\Core\User\MemberProvider
customer_provider:
id: Eccube\Security\Core\User\CustomerProvider
# https://symfony.com/doc/current/security.html#initial-security-yml-setup-authentication
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
pattern: '^/%eccube_admin_route%/'
anonymous: true
provider: member_provider
form_login:
check_path: admin_login
login_path: admin_login
csrf_token_generator: security.csrf.token_manager
default_target_path: admin_homepage
username_parameter: 'login_id'
password_parameter: 'password'
use_forward: true
success_handler: eccube.security.success_handler
failure_handler: eccube.security.failure_handler
logout:
path: admin_logout
target: admin_login
invalidate_session: false // セッションを維持するためここを追加
customer:
pattern: ^/
anonymous: true
provider: customer_provider
remember_me:
secret: '%kernel.secret%'
lifetime: 3600
name: eccube_remember_me
remember_me_parameter: 'login_memory'
form_login:
check_path: mypage_login
login_path: mypage_login
csrf_token_generator: security.csrf.token_manager
default_target_path: homepage
username_parameter: 'login_email'
password_parameter: 'login_pass'
use_forward: true
success_handler: eccube.security.success_handler
failure_handler: eccube.security.failure_handler
logout:
path: logout
target: homepage
invalidate_session: false // セッションを維持するためここを追加
access_decision_manager:
strategy: unanimous
allow_if_all_abstain: false
EC-CUBEにプルリク出しましたので、マージされれば次回のバージョンに反映されるかと思います。
https://github.com/EC-CUBE/ec-cube/pull/4082
