Current_user nil после создания сеанса в ROR с AuthLogic

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

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

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

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

self.current_user.to_xml;

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

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

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

2 ответа

Просто была та же проблема... не уверен, почему это происходит, но я пытался вызвать 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

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

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

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

Ура, Никлас

Другие вопросы по тегам