QA@IT

Heroku + Rails で HTTP Basic認証 と Devise を併用すると無限リダイレクトループになる問題を解決するには?

3388 PV

Heroku + Rails で、Devise と Basic認証の設定をしたら、無限リダイレクトでハマってしまいました。
下記の記事を読んでも解決できませんでして、ノウハウをお持ちの方がいらっしゃいましたら教えて頂けないでしょうか?
よろしくお願いします。

・How To: Use HTTP Basic Authentication · plataformatec/devise Wiki
https://github.com/plataformatec/devise/wiki/How-To:-Use-HTTP-Basic-Authentication
・Newlee - HTTP Basic Authentication and Devise
http://pivotallabs.com/users/ledwards/blog/articles/1534-http-basic-authentication-and-devise

回答

どのように実装しているかがないとなんとも言えないんですけど
Deviseのbasic認証機能とバッティングしてるんじゃないでしょうか?

(Deviseのユーザー認証機能(basic認証機能ではない)と
Rails or Rack等で実装したbasic認証機能がバッティングしているものと想定して書いています。)

deviceのinitializerで
config.http_authenticatable = false
にしてDevise側のbasic認証周りの機能をoffにすれば解決しそうな気がします。

編集 履歴 (0)

Devise + Basic認証でハマっていたと思っていたのですが、原因はCanCanのエラー処理で以下のようにしており、

class ApplicationController < ActionController::Base
  rescue_from CanCan::AccessDenied do |exception|
    redirect_to root_url, :alert => exception.message
  end
end

・参考:https://github.com/ryanb/cancan/wiki/Exception-Handling

root_url が権限ないと read すら許してなかったため、権限付与し忘れたUserでアクセスすると、無限リダイレクトループになっていたようでした。
(本来なら、全く権限のない状態のUserは存在しないはずなのですが、開発時のデータなのでこういうことになってしまっていました)

CanCanの問題を潰した後は、Devise + Basic認証の設定はすんなりできました。

nog さん、スピーディーな回答ありがとうございました!

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。