【问题标题】:authlogic_oid redirecting to /user_sessions#index instead of /user_session#createauthlogic_oid 重定向到 /user_sessions#index 而不是 /user_session#create
【发布时间】:2011-03-18 23:26:15
【问题描述】:

我正在使用 authlogic 和 authlogic-oid 编写一个 rails3 应用程序,以允许用户使用他们的 LinkedIn 帐户登录和注册。我可以调用 LinkedIn 进行身份验证,但我遇到的问题是,当调用返回到我的 rails 应用程序时,它在 /user_sessions 上调用 GET 并调用索引控制器,而不是执行创建的其余部分控制器。这是控制器:

# POST /user_sessions                                                         
def create
  @user_session = UserSession.new(params[:user_session])
  @user_session.save do |result| # <-- redirects to api.linkedin.com here
    if result
      flash[:success] = "Login successful!"
      redirect_back_or @user_session.user_path
    else
      flash.now[:error] = "Invalid username/password combination."
      @title = "Sign in"
      render 'new'
    end
  end
end

if result 之前一切正常,它永远不会被调用,因为程序会在index 控制器中恢复执行,而不是从中断的地方继续执行。任何有关如何解决此问题的想法将不胜感激。

编辑:我认为控制器没有完成执行的假设似乎是错误的。我已经放入了一堆调试语句,并了解到程序确实在 @user_session.save 之后在此控制器中恢复执行 它没有在 if 语句上执行任何一个条件。我对这个很困惑。

【问题讨论】:

    标签: ruby-on-rails-3 authlogic authlogic-oauth


    【解决方案1】:

    如果您不想在 UserSessionsController 中使用 index 方法,请在您的 route.rb 中写下:resources :user_session。如果你使用单数形式,那么路由可以映射 CRUD(创建、读取、更新、删除),如果你使用复数形式,那么它会将 CRUD 与控制器的 index 方法绑定。

    【讨论】:

    • 谢谢。在过去的几天里,我实际上一直在研究这个问题,我意识到@user_session.save 确实在这个控制器中恢复执行,它只是跳过了条件语句,这就是 rails 调用 /user_sessions#index 的原因。看起来这是 authlogic-oauth 与 rails3 不兼容的情况
    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2021-01-30
    • 2016-04-04
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多