5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

redmineのログインでリダイレクトループ

Posted at

redmineのログインで無限にリダイレクトループ

最近プライベートサーバにredmineを導入したのだが、
ブラウザのcookieを消すなどしてセッションが一度切れた状態となったあと、

redmineにアクセスすると無限にリダイレクトループとなりログイン出来なくなってしまった。

ので暫定処置のメモ。

※設定の「設定」->「認証」->「認証が必要」にチェックが入っている場合に再現。

環境

環境は下記のとおり。OSはFedora16をさくらのVPSで運用してます。
redmineはnginxとunicorn連携。

調査・解析

ググってみた

ググってもあまり情報がなく、本家のトラッカに類似のチケットはあがってた。
http://www.redmine.org/issues/12161

"settings.login_required" to 0 in the database will fix the problem.

とあるように、dbのデータを直接書きかえて「認証が必要」の設定を一旦OFFにすることで現象を回避してログインできるが、根本解決に至らずに再現しなくなったことになっている様子。

コードを追う

調べてみたところ、ここで何度もredirectされているよう。
このredirect_toの1行をコメントアウトするとリダイレクトループが止まった。

app/controller/ApplicationController.rb
def require_login
#途中省略
     redirect_to :controller => "account", :action => "login", :back_url => url

このメソッドは

app/controller/ApplicationController.rb
 def check_if_login_required
     # no check needed if user is already logged in
     return true if User.current.logged?
     require_login if Setting.login_required?
 end

から呼ばれるのだが、ログイン画面のコントローラであるらしきAccountControllerの実装は下記のように、check_if_login_requiredをskipすることになっている。

app/controller/AccountController.rb
skip_before_filter :check_if_login_required, :check_password_change

ところが使っているrailsのバージョンが古い?(未確認)のか、
これが機能していない。。
そのため何度もAccountControllerへのリダイレクトが無限に繰り返されている。

対処、というか暫定処置

再度ググってみたが、大して情報が見つけられず。

というわけで、超暫定対処だが、
このrequire_loginメソッドでコントローラがAccountControllerだったらリダイレクトしないようにした。

def require_login
#途中省略
            if params[:controller] != 'account'
              redirect_to :controller => "account", :action => "login", :back_url => url
            end

ひとまず不便さは解消。
これでとりあえず様子見かな。

betterな解求ム!

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?