10

認証にdeviseを使用しているRails 4アプリがあり、完全に機能します。私の唯一の問題は、サーバーにデプロイした後にユーザーのセッションが失われ、ユーザーが再度サインインする必要があることです。

nginx/passenger (アプリに使用している) を再起動するだけでは、失われません。アプリをデプロイすると、アプリが失われます。展開するために、すべてのデータベースも自動的に消去し、展開スクリプトはユーザーも生成するシード ファイルを実行します。

私たちは現在アプリを開発しているので、現時点ではこの種の動作は許容されますが、将来アプリの準備が整うと、このようなことはしません (もちろん!)。

これは再シードによる問題ですか、それとも何か他のことを確認する必要がありますか? 消去/シード操作を実行するたびに暗号化されたパスワードが変更されますが、これはユーザー セッションの損失と関係がありますか?

4

3 に答える 3

4

この動作の理由は次のとおりです。

一部のユーザーがパスワードを変更するたびに、自動的に彼をサインアウトするように工夫します。

したがって、基本的にはデータを再シードすることによって、パスワードが再計算されます (パスワードは同じでも、新しい暗号化されたパスワードは古いパスワードとは異なります)。そのため、パスワードが変更されたように見えるため (別の encrypted_pa​​ssword フィールドに基づいて)、デバイスは自動的にユーザーをサインアウトします。

私は、seeds.rb ファイルで encrypted_pa​​ssword を具体的に設定し、検証をバイパスすることで、この動作を回避することができました。

于 2013-06-12T18:34:28.857 に答える