设计 – 还记得我不工作吗? LocalHost问题?

我正在使用我的rails 3应用程序设计。 出于某种原因,使用Remember Me登录无效。

这可能是因为在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"}} 

那里有什么不对吗?

我的sessions_controller.rb中也有以下内容

 class SessionsController  [ :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 

登录和记忆的任何想法都不起作用? 谢谢

发生这种情况是因为remember_me在params中显示为“on”,但与Devise :: TRUE_VALUES进行比较,它们是[true,1,’1’,’t’,’T’,’true’,’TRUE’]。

最简单的方法就是确保你的remember_me成为其中一个值。 复选框示例(通知值=“1”):

  

另一种方法,如果你想让它与“on”值一起工作,你可以在Devise :: TRUE_VALUES上添加“on”。 所以在你的config / initializers / devise.rb中只需添加第一行:

 Devise::TRUE_VALUES << ["on"] 

Devise remember_user_token cookie可以设置为“仅安全”,在这种情况下,它不能与http上的开发rails服务器一起使用(浏览器永远不会将其发送回服务器)。

检查initializers / devise.rb是否为rememberable_options = {:secure => true}

你是否设置了会话以及config.timeout_in = 10.minutes

如果是这样,请参阅stackoverflow上的这个贡献,它解决了它的解决方案

我的问题是User.rb中的这一行(我从Michael Hartl登录机制更新到设计)

 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