Redmineでセッションのタイムアウト時間を設定する
Redmine 2.1ではセッション有効期間・無操作タイムアウトの設定が 「管理」→「設定」→「認証」で行えるようになります(#6597)。本記事の設定を行う必要はありません。
Redmineでは、一旦認証が行われるとブラウザを終了させるまでログイン状態が維持されます。しかし、コンピュータを多人数で共有している場合、あるいは組織内の情報セキュリティのルールで定められている場合など、一定時間操作を行わなかった場合は再度ログインし直さなければアクセスできないよう設定したいことがあろうかと思います。
Redmineの開発に使われているwebアプリケーションフレームワークのRuby on Railsの機能を使ってセッションのタイムアウト時間を指定することができます。
設定方法
Redmineの config/initializers/session_store.rb
内で :expire_after
の設定を追加します。以下の例は60分に設定しています。
追加した設定はRedmineの再起動後に有効になります。
ActionController::Base.session = { :expire_after => 60.minutes, :session_key => '_redmine_session', :secret => '****************' }
HTTPレスポンスヘッダを見ると、Set-Cookieフィールドにexpiresが追加されていることが追加されていることが確認できます。
caolila:~ maeda$ nc localhost 3000 HEAD / HTTP/1.0 HTTP/1.1 200 OK Etag: "508b1c4d3a995716fab658bcbc85bc26" Connection: close Content-Type: text/html; charset=utf-8 Date: Sun, 16 May 2010 09:28:59 GMT Server: WEBrick/1.3.1 (Ruby/1.8.7/2009-12-24) X-Runtime: 13 Content-Length: 3340 Cache-Control: private, max-age=0, must-revalidate Set-Cookie: _redmine_session=BAh7BjoPc2Vzc2lvbl9pZCIlZjNlYTBhNDkxZGQ2ZTY3ZTkxNmM0ZDBhZWViNTMyMWU%3D--8b681a740f774b53bf65435dde5d1dca208f598b; path=/; expires=Sun, 16-May-2010 10:28:59 GMT; HttpOnly
注意
5分や10分など短めの時間に設定すると、チケットやWikiの記入をしている間にセッションの有効期限が到来してしまい、書き込んだ内容を保存するために「変更」「保存」をクリックするとログイン画面が表示されて書き込もうとした内容が失われてしまうといった問題が発生します。
:expire_after
の設定を行う場合は、チケットやWikiの記入に時間がかかるケースも考慮して設定値を決定するようにしてください。