2011-01-16 10 views
0

RailsTutorial.orgエクササイズ9.6.2:[ログインしています]チェックボックスがオンの場合はクッキーでサインインしようとしています。セッションでサインインします。マイケル・ハートルのコードから始めて、私は次のように変更加えました:RailsTutorial.orgエクササイズ9.6.2 - ユーザーサインインのためにクッキーの代わりにセッションを使用

私はビューでサインインフォームにこのコードを追加しましたが>セッション> new.html.erb:

<div class="field"> 
    <%= f.check_box :stay_signed_in %> Stay signed in? 
</div> 

私は」セッションコントローラにこの1行を追加しまし:

def create 
    session[:staysignedin] = (params[:session][:stay_signed_in] == "1") ? true : false 
    ... 
end 

そして私は、セッションヘルパーで以下の変更作られました:

def sign_in(user) 
    if session[:staysignedin] 
    cookies.permanent.signed[:remember_token] = [user.id, user.salt] 
    else 
    session[:userid] = user.id 
    end 
    self.current_user = user 
end 

def sign_out 
    if session[:staysignedin] 
    cookies.delete(:remember_token) 
    else 
    session[:userid] = nil 
    session[:staysignedin] = nil 
    end 
    self.current_user = nil 
end 

def user_from_remember_token 
    session[:staysignedin] ? User.authenticate_with_salt(*remember_token) : User.find_by_id(session[:userid]) 
end 
を210

問題は、常にチェックボックスがチェックされていないかのように動作し、チェックボックスがオンになっていても、常にクッキーではなくセッションを使用してサインインしていることです。

答えて

関連する問題