サブディレクトリ運用の複数の Redmine で別の Redmine にアクセスすると勝手にログアウトするのを防ぐ
確認したバージョン
- Redmine 2.6.9.stable
問題
Redmine は _redmine_session という Cookie でログイン状態が管理されていてる。
Redmine では、何もしないとパスが "/" で登録されるので、実際に異なるパスの Cookie データでも、同じとみなされてしまう。
なので、別の Redmine にアクセスすると、同じドメイン、パスの同じ Cookie キーなのに、値が違うので、ログインのしなおしになる。
設定方針
config/application.rb の以下の部分にパスを指定すればいいが、このファイルは Git の管理下なのであまり修正しないほうがいい。
config.session_store :cookie_store, :key => '_redmine_session'
Redmine では、 config/application.rb に追記修正したい場合に、config/additional_environment.rb というファイルを用意している。 このファイルに書かれたコードは、Rails::Application のインスタンス化で eval されるので、 config/application.rb に書いたのと同じように動く。
解決
ということで、それぞれの Redmine の config/additional_environment.rb に以下のように書けばうまく動く。
config.session_store :cookie_store, :key => '_redmine_session', :path => '/XXXX'
XXXX はそれぞれの Redmine で異なる値を入れればよいが、その Redmine が配備されているサブディレクトリパスとかにすればいいと思う。