DesignAssembler

備忘録に近い

Production環境でDeviseがCompleted 401 Unauthorized in 2msを吐く

AWSrails+nginx+unicornを動かしてます。

Deviseでログインしようとすると正しいアドレスとパスワードでも401 Unauthorizedを吐かれます。
ちなみにcssとjsも読み込まれません。(AssetPipelineの問題だろうなぁ・・・・・・)

とりあえずrailsの確認です。
Webrick起動して3000でアクセスします。

$ rails server -d -b 0.0.0.0

これで無事アクセスできました。ログインも200が返ってきました。

つまり問題はnginxかunicornrailsとの連携の間にあるわけですね。


と思って散々やっても原因はわからない・・・

調べると、間違ったメールアドレスとパスワードを入力した時と同じ挙動をする事がわかりました。

もしかして登録できてない?と思ってコンソールで確認してみるものの登録されています。

解決、原因

解決
アカウントの作成をコンソールから(User.new(email:"",password:""))でするのをやめてブラウザから(domain.com/users/sign_in)したら無事ログインできました。


原因

Devise固有のパラメーターが登録されていなかったためです。developで問題なく動いていたので油断していました。

Deviseまわり、よく勉強します。

追記

rails cのデフォルト環境はdevelopみたいです。production環境で使いたい場合は

$ rails console -e production

としなくてはならないようです。

つまり、productionのデータベースに登録できていなかったからproductionで401吐かれたというわけです。

ポンコツをしでかしていました。