2011-05-13 9 views
9

Estoy usando la aplicación my rails 3. Por algún motivo, el inicio de sesión con Remember Me no funciona.Idear - ¿me recuerda que no funciona? ¿Problema local?

¿Podría ser esto debido a las pruebas en localhost: 3000?

en devise.rb, tengo el siguiente conjunto:

config.remember_for = 2.weeks 

En los registros, cuando publicar un signin veo:

Started POST "https://stackoverflow.com/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"=>"[email protected]"}} 

¿Hay algo mal allí?

que también tienen la siguiente en mi sessions_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 

Cualquier idea por qué la firma y recordar que no está funcionando? Gracias

+0

Al cerrar el navegador y volver a la máquina local:. 3000 url tengo que volver a iniciar sesión también veo la cookie tiene nada establecido para una fecha de vencimiento – AnApprentice

Respuesta

20

Esto sucede porque remember_me viene en params como "on", pero se compara con Idear :: TRUE_VALUES, que son [verdadero, 1, '1' , 't', 'T', 'verdadero', 'VERDADERO'].

La manera más fácil es hacer que funcione para asegurar que remember_me sea uno de esos valores. Ejemplo de casilla (valor previo aviso = "1"):

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

Otra forma si quieres que funcione con el valor "on" puede agregar "a" idear :: TRUE_VALUES. Así que en su config/inicializadores/devise.rb acaba de agregar como la primera línea:

Devise::TRUE_VALUES << ["on"] 
0

¿Tiene las sesiones establecidas también con config.timeout_in = 10.minutes?

Si es así ver su cotización con stackoverflow, que lo resuelve solution

0

Mi problema con esto era esta sola línea en User.rb (He actualizado de mecanismo de inicio de sesión Michael Hartl idear)

before_save :create_remember_token 

Lo comenté y funcionó.

también tienen:

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 

En devise.rb, solamente he añadido Devise::TRUE_VALUES << ["on"] y sin comentar config.remember_for = 2.weeks

1

La cookie Diseñar remember_user_token podría estar en 'asegurar only ', en cuyo caso no funciona con el servidor de rails de desarrollo en http (el navegador nunca lo envía de vuelta al servidor).

Verificar inicializadores/devise.rb para rememberable_options = {: secure => true}

Cuestiones relacionadas