代码之家  ›  专栏  ›  技术社区  ›  zkcro

Sorcery的current_user方法在生产中登录后直接返回false

  •  1
  • zkcro  · 技术社区  · 11 年前

    我对魔法宝石有点意见。当我登录到我的应用程序时,控制器成功地登录了该应用程序,然后将我重定向到另一个页面(我可以确保登录凭据是正确的,就好像它们不是一样——会呈现登录页面操作,而不是进行重定向)。然而,当应用程序试图加载此页面时,魔法 requires_login 方法失败,因为 current_user 返回false(然后触发 not_authenticated 并引导我回到首页)。

    这只发生在生产中,如果我在开发中运行网站,一切都会很好。我试着把其他的都去掉了 before_filters 跑了,仍然会遇到同样的问题,所以这不是什么问题。

    登录由以下控制器操作处理(我不认为其中有任何责任,只是以防万一):

    # user_sessions_controller.rb
    def create
      logout
      @user = login(params[:email], params[:password])
      if @user
        @user.assign_locale(params[:locale])
        flash[:success] = "Log in successful."
        if can? :read, Organisation
          redirect_to some_path
        else
          redirect_to another_path
        end
      else
        flash.now[:error] = "Unrecognised email/password combination"
        render "new"
      end
    end
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   zkcro    11 年前

    这完全是我自己造成的问题。我在自己的机器上测试生产,没有ssl

    secure: Rails.env.production?
    

    设置为我的一个 session_store 选项,这意味着没有提供魔法所需的饼干。