我们有一个现有的用户群,并且正在添加电子邮件确认。确认是可选的,但将允许附加功能。用户无需确认。我添加了可确认模块并运行了迁移。确认工作如广告。
但是,用户无法登录,因为他们没有得到确认。所有当前用户都有 nil 确认值,这是我们想要的(用户可以随时返回并确认他们的电子邮件)。我已经关注了所有的 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
设计的回应:
{"error":"您必须在继续之前确认您的帐户。"}
使用 Rails 3.2.9 设计 2.1.2。