Production環境でDeviseがCompleted 401 Unauthorized in 2msを吐く
AWSでrails+nginx+unicornを動かしてます。
Deviseでログインしようとすると正しいアドレスとパスワードでも401 Unauthorizedを吐かれます。
ちなみにcssとjsも読み込まれません。(AssetPipelineの問題だろうなぁ・・・・・・)
とりあえずrailsの確認です。
Webrick起動して3000でアクセスします。
$ rails server -d -b 0.0.0.0
これで無事アクセスできました。ログインも200が返ってきました。
つまり問題はnginxかunicornのrailsとの連携の間にあるわけですね。
と思って散々やっても原因はわからない・・・
調べると、間違ったメールアドレスとパスワードを入力した時と同じ挙動をする事がわかりました。
もしかして登録できてない?と思ってコンソールで確認してみるものの登録されています。
解決、原因
解決
アカウントの作成をコンソールから(User.new(email:"",password:""))でするのをやめてブラウザから(domain.com/users/sign_in)したら無事ログインできました。
原因
Devise固有のパラメーターが登録されていなかったためです。developで問題なく動いていたので油断していました。
Deviseまわり、よく勉強します。
追記rails cのデフォルト環境はdevelopみたいです。production環境で使いたい場合は
$ rails console -e production
としなくてはならないようです。
つまり、productionのデータベースに登録できていなかったからproductionで401吐かれたというわけです。
ポンコツをしでかしていました。