Ruby on rails 设计用户界面';即使我在参数内设置了confirm_,也不能登录

Ruby on rails 设计用户界面';即使我在参数内设置了confirm_,也不能登录,ruby-on-rails,ruby-on-rails-3,devise,Ruby On Rails,Ruby On Rails 3,Devise,我有一个rails应用程序,使用Desive gem进行用户身份验证 我使用confirmable向用户发送确认电子邮件。它运转得很好。我收到一封确认邮件。在成功登录之前,我需要确认我的帐户 我想让他们先试用一下我们的应用程序,然后再确认他们的帐户。所以我在designe初始化器中设置了confirm_。它失败了。用户填写注册表单后,他们将在注册后重定向回登录页面。我查看了日志,似乎用户没有登录。所以认证失败了!在过滤器之前 这是我的配置 型号:user.rb devise :databas

我有一个rails应用程序,使用Desive gem进行用户身份验证

我使用confirmable向用户发送确认电子邮件。它运转得很好。我收到一封确认邮件。在成功登录之前,我需要确认我的帐户

我想让他们先试用一下我们的应用程序,然后再确认他们的帐户。所以我在designe初始化器中设置了confirm_。它失败了。用户填写注册表单后,他们将在注册后重定向回登录页面。我查看了日志,似乎用户没有登录。所以认证失败了!在过滤器之前

这是我的配置

型号:user.rb

  devise :database_authenticatable, :registerable, :encryptable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable
route.rb

  devise_for :users, :controllers => {:password => "passwords"}
初始值设定项:designe.rb

  config.confirm_within = 2.days
应用程序\u controller.rb

  def after_sign_in_path_for(resource)
      stored_location_for(resource) || jobs_path
  end
  class JobsController < ApplicationController
    before_filter :authenticate_user!

    ***some functions
  end
jobs_controller.rb

  def after_sign_in_path_for(resource)
      stored_location_for(resource) || jobs_path
  end
  class JobsController < ApplicationController
    before_filter :authenticate_user!

    ***some functions
  end
类作业控制器

我不确定我错过了什么。有人能告诉我如何解决这个问题吗?谢谢。

很抱歉,我无法提供更多帮助,我没有任何使用Desive的
确认功能的经验。但是,如果我没弄错的话,用户应该在注册后注销,因为在通过回复电子邮件确认其电子邮件地址之前,他们不应该登录。如果您希望他们在注册后自动登录,那么我相信您需要删除
确认\u in
选项。在我看来,
confirm_in
选项是用户确认他们注册的电子邮件地址实际上是他们的(通过单击收到电子邮件的链接)所需的时间

我认为您阅读了错误的文档: “*+允许\未确认\访问\用于+:您希望允许用户访问其帐户的时间 #在此期间之后,用户访问被拒绝。您可以 #使用此选项,用户可以访问应用程序的某些功能,而无需 #确认账户,但在一段时间后(即7天)将其冻结。 #默认情况下,allow_unconfirmed_access_for为零,这意味着用户必须始终确认才能登录。 #*+可再确认+:要求确认任何电子邮件更改(与 #初始帐户确认)。需要额外的未确认电子邮件 #待设置的db字段(t.在迁移中可重新确认)。直到确认新电子邮件 #存储在未确认电子邮件列中,并在成功时复制到电子邮件列 #确认。 #*+确认\+内:发送的确认令牌变为无效之前的时间。 #您可以使用此命令强制用户在设定的时间段内进行确认。“

在这里

因此,对于允许用户在特定时间内无需确认即可登录,您必须定义:

config.allow_unconfirmed_access_

允许用户确认,在他无法再确认后,这意味着他需要为该电子邮件发送新的确认,因为令牌无效:

config.confirm\u在


希望它是明确的

你是否真的让用户登录过?您需要调用
sign_in@user
,用户才能登录。通常,您会在用户提交登录表单时验证其凭据后执行此操作…感谢回复@Batkins。登记和确认过程由DEVICE控制。我用的是官方的宝石,里面什么都没变。我检查了源代码,似乎在注册的用户中设计了sign#u#create ready。。。。有什么想法吗?根据设计文件。config_in是一个参数,允许用户在不确认其帐户的情况下登录。非常感谢你的帮助。:)实际上,config.confirm\u in是config.allow\u unconfirm\u access\u的旧名称,抱歉,我没有看到这篇文章有多旧