从包含的中间件中捕获异常

时间:2013-11-29 01:10:03

标签: ruby sinatra rack middleware

我有一个Sinatra应用程序,我正在使用rack_csrf gem来保护我的表单,如果CSRF令牌无效并且我想捕获它用于记录目的,这个gem会引发异常。有没有办法捕获此异常或从主Sinatra应用程序获取返回的状态代码?

我的代码是这样的:

class MyApp < Sinatra::Base
  use Rack::Csrf
end

这就是我想要捕捉的内容:https://github.com/baldowl/rack_csrf/blob/master/lib/rack/csrf.rb#L42

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可能需要write a middleware才能从您的应用中捕获该异常并进行日志记录。如下所示:

def call(env)
  @app.call(env)
rescue InvalidCsrfToken => e
  #log error here, then return a status code
end