Плагин Restful_authentication не работает - PullRequest
0 голосов
/ 14 января 2010

Я использую плагин restful_authentication для Ruby on Rails. Все выглядит хорошо, за исключением того, что пользовательский сеанс вообще не создается. У меня есть метод создания ниже. Похоже, что self.current_user устанавливается, но фактический сеанс не создается Когда и как должно быть определено current_user_session. У меня есть метод в контроллере приложения, но он всегда терпит неудачу.

def create
logout_keeping_session!
user = User.authenticate(params[:login], params[:password])
if user
  # Protects against session fixation attacks, causes request forgery
  # protection if user resubmits an earlier form using back
  # button. Uncomment if you understand the tradeoffs.
  # reset_session
  self.current_user = user
  new_cookie_flag = (params[:remember_me] == "1")
  handle_remember_cookie! new_cookie_flag
  redirect_back_or_default('/')
  flash[:notice] = "Logged in successfully"
else
  note_failed_signin
  @login       = params[:login]
  @remember_me = params[:remember_me]
  render :action => 'new'
end

конец

application_controller

  def current_user_session
    return @current_user_session if defined?(@current_user_session)
    @current_user_session = UserSession.find
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.user
  end

Модель UserSession пуста

Ответы [ 3 ]

2 голосов
/ 14 января 2010

Не используйте restful_authentication, если вы можете избежать этого. Есть ряд лучших альтернатив, которые на самом деле RESTful и лучше поддерживаются:

0 голосов
/ 14 января 2010

Вы используете рельсы 2.3.5?

Я вижу проблемы с этим, используя redirect_to, в основном удаляя все переменные, добавленные в сеанс перед перенаправлением.

Возвращение к 2.3.4, кажется, решило мою проблему, но есть ошибка на маяке в связи с некоторой странностью для сессии в рельсах 2.3.X

Возможно, это не та проблема для вас, но мне потребовались часы, чтобы понять, что откат исправил мою проблему, поэтому может стоить провести быстрое тестирование.

0 голосов
/ 14 января 2010

Когда вы говорите сессия, вы на самом деле имеете в виду сессию или это волшебство restful_authentication?

Раньше я использовал restful_authentication, но некоторые старые приложения все еще используют. Однако они использовали управление сеансами на основе файлов cookie, а не модель сеанса пользователя.

...