【问题标题】:Current_user nil after creating a session in ROR with AuthLogicCurrent_user 在使用 AuthLogic 在 ROR 中创建会话后为零
【发布时间】:2011-07-15 09:17:48
【问题描述】:

我在使用 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 是在我的创建操作中的渲染命令之后的某个时间设置的。

如果我需要我的 rails 控制器在创建操作中返回当前用户,我该怎么做?

【问题讨论】:

  • 你能告诉我们你在控制器中的 current_user 方法吗?

标签: ruby-on-rails flex4 authlogic cairngorm


【解决方案1】:

只是遇到了完全相同的问题...不知道为什么会发生这种情况,但我试图在我的 user_sessions_controller.rb 的 create 方法中调用 current_user,按以下方式解决...

  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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    这是因为辅助方法 current_user 通常被定义为 before_action。这意味着,在您在会话创建期间使用之前,之前的操作没有运行。

    我也使用了这个 UserSession.find.user 非常适合这个用例。

    干杯, 尼克拉斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-03
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 2012-08-11
      • 1970-01-01
      相关资源
      最近更新 更多