【问题标题】:Rails 6 Bcrypt vs Passenger error on ProductionRails 6 Bcrypt 与生产中的乘客错误
【发布时间】:2020-08-17 16:46:04
【问题描述】:

更改我的 ssl 设置并重新启动我的 Nginx 后,我开始在乘客启动中收到以下错误:

Before process_action callback :ensure_user_signed_in has not been defined (ArgumentError)

我正在运行 Rails 6,Nginx/Passenger。保护区只是一个单一的命名空间。

sessions_controller

class SessionsController < NamespaceController
    skip_before_action :ensure_user_signed_in, only: [:new, :create]

    # Present login form
    def new
    end

    # Create Session
    def create
        user = User.where(email: params[:email]).first

        if user && user.authenticate(params[:password])
            session[:user_id] = user.id
            redirect_to '/namespace/adminhub'
        else
            redirect_to new_sessions_path, alert: 'Unable to authenticate'
        end
    end

    # Logout
    def destroy
        reset_session
        redirect_to root_path
    end

end

命名空间控制器

class NamespaceController < ApplicationController
    before_action :ensure_user_signed_in

    private
        def ensure_user_signed_in
            unless current_user.present?
            redirect_to new_sessions_path, alert: 'Must be signed in.'
        end
    end

    def current_user
        if session.has_key? :user_id
            @current_user ||=User.find(session[:user_id])
        end
    end
    helper_method :current_user
  end

编辑:我试图撤消我在 nginx 中的 ssl 更改并重新启动乘客,但这似乎都不是导致此问题的原因。有趣的是,当我第一次使用 Bcrpyt 推出更改时,页面加载没有问题并正常运行,就像在我的开发区域中一样。直到我不得不重新启动 nginx 进程才发现这个错误。

【问题讨论】:

    标签: passenger ruby-on-rails-6 bcrypt-ruby


    【解决方案1】:

    经过更多的挖掘和试验,我找到了this article。在我的控制器中,我在行尾添加了raise: false

    skip_before_action :ensure_user_signed_in, only: [:new, :create], raise: false

    在那之后我一直在工作。虽然,我不肯定为什么这会奏效,但确实如此。我将继续对此进行研究。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多