Придумай - помнишь, я не работал?LocalHost Проблема? - PullRequest
9 голосов
/ 13 мая 2011

Я использую устройство с моим приложением rails 3. По какой-то причине вход в «Помни меня» не работает.

Может ли это быть из-за тестирования на localhost: 3000?

в devise.rb, у меня есть следующий набор:

config.remember_for = 2.weeks

В логах, когда я публикую вход, я вижу:

Started POST "/users/sign_in" for 127.0.0.1 at Thu May 12 20:53:04 -0700 2011
  Processing by SessionsController#create as HTML
  Parameters: {"signIn"=>"LOG IN", "authenticity_token"=>"GR09TIq4uSbu6UWxDRhpfQeLWp7qtJTxkCFksLmFzdE=", "utf8"=>"✓", "user"=>{"remember_me"=>"on", "password"=>"[FILTERED]", "email"=>"xxxx@xxxxxxx-inc.com"}}

Что-то там не так?

У меня также есть следующее в моем session_controller.rb

class SessionsController < Devise::SessionsController

  prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
  include Devise::Controllers::InternalHelpers

  # GET /resource/sign_in
  def new
    clean_up_passwords(build_resource)
    render_with_scope :new
  end

  # POST /resource/sign_in
  def create
    resource = warden.authenticate!(:scope => resource_name, :recall => "new")
    #set_flash_message :notice, :signed_in
    sign_in_and_redirect(resource_name, resource)
  end

  # GET /resource/sign_out
  def destroy
    #set_flash_message :notice, :signed_out if signed_in?(resource_name)
    sign_out_and_redirect(resource_name)
  end

  protected

  def after_sign_in_path_for(resource)
    if resource.is_a?(User) && resource.banned?
      sign_out resource
      flash[:error] = "This account has been suspended."
      root_path
    else
      super
    end
  end


end

Есть идеи, почему не работает вход и запоминание? Спасибо

Ответы [ 4 ]

20 голосов
/ 25 июня 2011

Это происходит потому, что Remember_me входит в параметры как «on», но сравнивается с Devise :: TRUE_VALUES, которые [true, 1, '1', 't', 'T', 'true', 'TRUE'].

Самый простой способ заставить это работать, это убедиться, что ваш Remember_me является одним из этих значений.Пример флажка (значение уведомления = "1"):

<input type="checkbox" name="user[remember_me]" value="1" checked="checked" />

Другой способ, если вы хотите, чтобы он работал со значением "on", вы можете добавить "on" в Devise :: TRUE_VALUES.Так что в вашем config / initializers / devise.rb просто добавьте в качестве первой строки:

Devise::TRUE_VALUES << ["on"]
1 голос
/ 04 февраля 2015

Файл cookie Devise Remember_user_token может быть установлен как «только защищенный», и в этом случае он не работает с сервером rails разработки на http (браузер никогда не отправляет его обратно на сервер).

Проверьте инициализаторы / devise.rb на наличие запоминаемых_опций = {: secure => true}

0 голосов
/ 12 марта 2013

Моя проблема с этим была в одной строке в User.rb (я обновил механизм входа Михаэля Хартла, чтобы придумать)

before_save :create_remember_token

Я прокомментировал это, и это сработало.

У меня также есть:

User.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,:token_authenticatable,
         :recoverable, :rememberable, :trackable, :validatable

На devise.rb я только добавил Devise::TRUE_VALUES << ["on"] и оставил комментарий config.remember_for = 2.weeks

0 голосов
/ 01 июня 2011

У вас установлены сеансы с config.timeout_in = 10.минут ?

Если это так, посмотрите этот вклад в стекопоток, который решает его решение

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