Current_user nil после создания сеанса в ROR с AuthLogic - PullRequest
4 голосов
/ 15 марта 2011

У меня проблемы с AuthLogic и current_user.

У меня есть приложение Flex4, использующее инфраструктуру Cairngorm в качестве внешнего интерфейса и Ruby On Rails в качестве внутреннего.

Я могу нормально входить в систему через браузер и только при использовании ROR.Тем не менее, когда я пробую его через приложение Flex4, в первый раз произойдет сбой, но он будет работать во второй раз.

То, что происходит, находится внутри user_sessions_controller.rb У меня есть вызов

self.current_user.to_xml;

При первом вызове действия создания объект current_user возвращает nil.Во второй раз, когда я его называю (без перезапуска сервера или браузера), это будет правильный текущий пользователь.

Так что это заставляет меня поверить, что current_user устанавливается через некоторое время после команды render внутри моего действия create,

Если мне понадобится мой контроллер rails для возврата текущего пользователя в действии создания, как мне поступить?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2012

У меня была точно такая же проблема ... не уверен, почему это происходит, но я пытался вызвать current_user в моем методе создания в моем user_sessions_controller.rb, решенном согласно ниже ...

  def create
    @user_session = UserSession.new(params[:user_session])

    if @user_session.save
      current_user = UserSession.find.user
      current_user.increment_login_count_for_current_memberships!
      flash[:notice] = 'Sign in successful.'
      redirect_to root_path
    else
      render action: "new"
    end
  end

Надеюсь, это поможет!

0 голосов
/ 22 февраля 2018

Это потому, что вспомогательные методы current_user обычно определяются как before_action.Что означает, что действие before не запускалось перед использованием во время создания сеанса.

Я также использовал этот UserSession.find.user, который отлично подходит для этого сценария.

Cheers, Niklas

...