Разработать пользователя не может войти, даже если я настроил параметр verify_within - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть приложение rails, использующее гем devise для аутентификации пользователя.

Я использовал подтверждающее, чтобы отправить подтверждение по электронной почте пользователю. Работает хорошо. Я получил подтверждение по электронной почте. И мне нужно подтвердить свой аккаунт, прежде чем войти в систему.

Я бы хотел, чтобы они попробовали наше приложение некоторое время, прежде чем подтвердить свой аккаунт. Так что я устанавливаю verify_within в инициализаторе устройства. Это не удалось. После того, как пользователь заполнил регистрационную форму, он будет перенаправлен обратно на страницу входа после регистрации. Я проверил журнал, кажется, что пользователь не вошел в систему. Поэтому он не прошел проверку подлинности! до фильтра.

Вот моя конфигурация.

Модель: user.rb

  devise :database_authenticatable, :registerable, :encryptable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable

route.rb

  devise_for :users, :controllers => {:password => "passwords"}

Инициализатор: devise.rb

  config.confirm_within = 2.days

application_controller.rb

  def after_sign_in_path_for(resource)
      stored_location_for(resource) || jobs_path
  end

jobs_controller.rb

  class JobsController < ApplicationController
    before_filter :authenticate_user!

    ***some functions
  end

Я не уверен, что что-то пропустил. Кто-нибудь любезно подскажет, как решить эту проблему? Спасибо.

Ответы [ 2 ]

1 голос
/ 12 марта 2013

Я думаю, что вы читаете неправильную документацию: "* + allow_unconfirmed_access_for +: время, когда вы хотите разрешить пользователю доступ к своей учетной записи # перед его подтверждением. По истечении этого периода доступ пользователя запрещен. Вы можете # использовать это дляПозвольте вашему пользователю получить доступ к некоторым функциям вашего приложения, не # подтверждая учетную запись, но блокируя ее по истечении определенного периода (например, 7 дней). # По умолчанию значение allow_unconfirmed_access_for равно нулю, это означает, что пользователи всегда должны подтверждать вход в систему. # * +confirmable +: требует подтверждения изменений электронной почты (точно так же, как # начальное подтверждение учетной записи). Требуется настроить дополнительное поле unsfirmed_email # db (t.reconfirmable в миграциях). До тех пор, пока подтвержденная новая почта не будет # сохранена в неподтвержденной электронной почтестолбец и копируется в столбец электронной почты при успешном # подтверждении. # * + verify_within +: время до того, как отправленный токен подтверждения становится недействительным. # Это можно использовать, чтобы заставить пользователя подтвердить в течение установленного периода времени. "

здесь https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb

, поэтому для того, чтобы пользователь мог войти без подтверждения в течение определенного времени, вы должны определить:

config.allow_unconfirmed_access_for

и разрешитьПользователь для подтверждения, который после того, как он больше не может подтвердить, что означает, что ему необходимо отправить новое подтверждение для этого электронного письма, потому что токен становится недействительным:

config.confirm_within

надеюсь, что оно было явным,

1 голос
/ 02 февраля 2012

Извините, что не могу помочь, у меня нет опыта работы с confirm_within функцией Devise.Тем не менее, в соответствии с этим вопросом , представляется, что пользователь должен выйти из системы после регистрации, поскольку он не должен входить в систему, пока не подтвердит свой адрес электронной почты, ответив на электронное письмо, если яне ошибаюсьЕсли вы хотите, чтобы они регистрировались автоматически после регистрации, то я считаю, что вам нужно удалить опцию confirm_within.Мне кажется, что опция confirm_within - это количество времени, которое пользователь имеет для подтверждения того, что адрес электронной почты, на который он подписан, фактически принадлежит ему (нажав на ссылку, которая ему отправляется по электронной почте).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...