RailsTutorial.org Упражнение 9.6.2 - использование сеанса вместо файлов cookie для входа пользователя - PullRequest
0 голосов
/ 17 января 2011

RailsTutorial.org Упражнение 9.6.2. Я пытаюсь войти с помощью файлов cookie, если установлен флажок «Оставаться в системе», в противном случае войдите в систему с сеансом. Исходя из кода Майкла Хартла, я внес следующие изменения:

Я добавил этот код в форму входа в представлении> сеансы> new.html.erb:

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

Я добавил одну строку в контроллер сессий:

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

Проблема в том, что он всегда ведет себя так, как будто флажок снят, всегда входя в систему с использованием сессии, а не куки, даже когда флажок установлен, и я просто не могу понять, почему

1 Ответ

0 голосов
/ 19 ноября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...