既存のユーザーベースがあり、確認メールを追加しています。確認はオプションですが、追加機能が許可されます。ユーザーは確認する必要はありません。確認可能なモジュールを追加し、移行を実行しました。確認は宣伝どおりに機能します。
ただし、ユーザーは認証されていないため、ログインできません。現在のすべてのユーザーの確認値はゼロです。これは私たちが望んでいることです (ユーザーはいつでも戻ってメールを確認できます)。すべての Devise wiki 記事に従い、初期化子で allow_unconfirmed_access_for を設定しました。
config.allow_unconfirmed_access_for = 10.years
ユーザーモデルでも設定してみました:
devise :confirmable, allow_unconfirmed_access_for: 10.years
他の値 (1.year、500.days など) も使用してみました。
私のSessionsController、Deviseの方法と大差ありません(こちらgithubにあります)
class Users::SessionsController < Devise::SessionsController
respond_to :json
def new
redirect_to "/#login"
end
def create
resource = warden.authenticate(auth_options)
if !resource
render json: {error: "Invalid email or password" }, status: 401 and return
end
sign_in(resource_name, resource)
render "sign_in", formats: [:json], locals: { object: resource }
end
end
工夫の応答:
{"エラー":"続行する前に、アカウントを確認する必要があります。"}
Rails 3.2.9 で 2.1.2 を考案します。