2011-05-13 50 views
9

我使用我的導軌3應用程序的設計。出於某種原因,使用「記住我」登錄不起作用。設計 - 記住我不工作? LocalHost問題?

這可能是由於在localhost:3000上測試?

在devise.rb

,我有以下設置:

config.remember_for = 2.weeks 

在日誌中,當我發佈一個登入我看到:

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]"}} 

這有什麼錯呢?

我也有我的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 

任何想法,爲什麼登錄和記憶不工作下列?謝謝

+0

當我關閉瀏覽器並返回到本地主機:3000網址我不得不重新登錄,我也看到該cookie沒有設定過期日期 – AnApprentice 2011-05-13 03:59:00

回答

20

這是因爲remember_me進來PARAMS爲「上」,但相比設計:: TRUE_VALUES,這是[真實的,1,「1」 ,'t','T','真','真']。

最簡單的方法就是確保您的remember_me成爲其中的一個值。複選框的例子(注意:值=「1」):

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

,如果你想讓它與「上」工作的另一種方式,你可以「」增值制定:: TRUE_VALUES。 所以,在你的配置/初始化/ devise.rb只需添加作爲第一行:

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

你有會話設置爲config.timeout_in = 10.分鐘

如果是這樣看的計算器這方面的貢獻,其解決它solution

0

我這個問題是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

1

的設計remember_user_token的cookie可以被設置爲「安全只有',在這種情況下,它不能與http上的開發rails服務器一起工作(瀏覽器永遠不會將它發送回服務器)。對於rememberable_options

檢查初始化/ devise.rb = {:安全=>真}