Rails 6 Bcrypt vs Passenger 生产错误
Rails 6 Bcrypt vs Passenger error on Production
更改我的 ssl 设置并重新启动 Nginx 后,我开始在 Passenger 启动中收到以下错误:
Before process_action callback :ensure_user_signed_in has not been defined (ArgumentError)
我是运行Rails6,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
Namespace_controller
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进程,才发现这个错误。
经过更多的挖掘和试验,我发现了 this article。在我的控制器中,我在行尾添加了 raise: false
。
skip_before_action :ensure_user_signed_in, only: [:new, :create], raise: false
然后我就开始工作了。虽然,我不确定为什么会这样,但确实如此。我将继续对此进行研究。
更改我的 ssl 设置并重新启动 Nginx 后,我开始在 Passenger 启动中收到以下错误:
Before process_action callback :ensure_user_signed_in has not been defined (ArgumentError)
我是运行Rails6,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
Namespace_controller
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进程,才发现这个错误。
经过更多的挖掘和试验,我发现了 this article。在我的控制器中,我在行尾添加了 raise: false
。
skip_before_action :ensure_user_signed_in, only: [:new, :create], raise: false
然后我就开始工作了。虽然,我不确定为什么会这样,但确实如此。我将继续对此进行研究。