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

AnA*_*ice 9 ruby-on-rails devise ruby-on-rails-3

我正在使用我的rails 3 app设计.出于某种原因,使用Remember Me登录无效.

这可能是因为在localhost:3000上测试了吗?

在devise.rb中,我有以下几组:

config.remember_for = 2.weeks
Run Code Online (Sandbox Code Playgroud)

在日志中,当我发布登录时,我看到:

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"}}
Run Code Online (Sandbox Code Playgroud)

那里有什么不对吗?

我的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
Run Code Online (Sandbox Code Playgroud)

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

Dmi*_*mov 20

发生这种情况是因为remember_me在params中显示为"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" />
Run Code Online (Sandbox Code Playgroud)

另一种方法,如果你想让它使用"on"值,你可以在Devise :: TRUE_VALUES上添加"on".所以在你的config/initializers/devise.rb中只需添加第一行:

Devise::TRUE_VALUES << ["on"]
Run Code Online (Sandbox Code Playgroud)