ruby-on-rails – 如何在中间件中设置current_user?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何在中间件中设置current_user?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为了提供更多我的问题的背景知识,请参阅这个 Github问题 – https://github.com/getsentry/raven-ruby/issues/144

我正在使用raven这是一个错误记录器.如果用户登录,我想为current_user添加id.我收到的答案是

This should be done via your middleware or somewhere similar.

这意味着在Raven中设置current_user.

我读过关于中间件的内容,但仍然无法弄清楚如何将current_user放在一个中.

解决方法

对于Rails应用程序,我已成功在ApplicationController中的before_action中设置Raven(Sentry)上下文:
# application_controller.rb
class ApplicationController < ActionController::Base
  before_action :set_raven_context

  def set_raven_context
    # I use subdomains in my app,but you could leave this next line out if it's not relevant
    context = { account: request.subdomain }
    context.merge!({ user_id: current_user.id,email: current_user.email }) unless current_user.blank?
    Raven.user_context(context)
  end
end

这是有效的,因为乌鸦Rack中间件会在每次请求后清除上下文. See here.但是,它可能不是最有效的,因为即使在大多数不会导致异常的情况下,您也在设置上下文.但无论如何,它并不是那么昂贵的操作,并且它会让你相当远,而不是真的需要乱用注入新的Rack中间件或任何东西.

猜你在找的Ruby相关文章