要望や症状
EC-CUBE 4.2系では、会員ログイン時に「次回から自動的にログインする」をチェックして自動ログイン機能を使用することができます。
しかし、この有効期限がデフォルトで1時間に設定されているため、1時間後に再接続するとログイン画面が表示されてしまい、自動ログインが機能しません。ユーザビリティの観点から、より長い期間の自動ログインを実現したい場合があります。
理由や原因
EC-CUBEの自動ログイン機能は、Symfonyのremember_me機能を使用して実装されています。この機能により「eccube_remember_me」という名前のCookieが作成されます。
デフォルトの設定では、/app/config/eccube/packages/security.yamlファイル内のlifetime: 3600という設定により、自動ログインの有効期限が3600秒(1時間)に設定されています。
この設定は、セキュリティ上の理由から比較的短時間に設定されていますが、運用要件によってはより長い期間に変更する必要があります。
解決策
本体ファイルを直接変更せず、Customizeディレクトリを使用して設定をオーバーライドする方法を推奨します。
設定ファイルの作成
Customizeディレクトリ内に設定ファイルを作成します。
# app/Customize/config/packages/security.yaml
security:
firewalls:
customer:
remember_me:
lifetime: 86400 # 24時間(秒単位で指定)
# 必要に応じて他の値に変更可能
# 1週間: 604800
# 1ヶ月: 2592000
キャッシュクリア
設定ファイルを作成した後、キャッシュをクリアします。
bin/console cache:clear
動作確認
設定変更後の動作確認は以下の手順で行います。
まず、ログイン画面で「次回から自動的にログインする」をチェックしてログインします。次に、ブラウザの開発者ツールでCookieの有効期限を確認します。最後に、設定した時間後に再接続して自動ログインが機能することを確認します。
設定値の参考
有効期限の設定値は秒単位で指定します。一般的な期間の秒数は以下の通りです。
| 期間 | 秒数 |
|---|---|
| 1時間 | 3600 |
| 6時間 | 21600 |
| 24時間 | 86400 |
| 1週間 | 604800 |
| 1ヶ月 | 2592000 |
注意事項
有効期限を長く設定するほどセキュリティリスクが高まるため、運用要件とセキュリティのバランスを考慮して設定してください。特に共用端末での利用が想定される場合は、短めの設定を推奨します。
また、設定変更後は必ずキャッシュクリアを実行してください。