1

現在、私は次のようなものを持っています:

def valid?(stuff)
  #...
end

get '/somewhere'
  return status 403 unless valid?(something) && valid?(something_else)
  # ...
end

(この特定のケースでは、paramユーザーがアクセスしてはいけないものにアクセスできないようにするために、ファイル名を含む がそのパラメーターに許可されているディレクトリ内にあるかどうかを確認しています。)

しかし、特に複数の場所で同じ構造を持っているため、扱いにくくなります。私はむしろこのようなことをしたい:

def ensure_valid(stuff)
  raise Forbidden unless valid?(stuff)
end

get '/somewhere'
  ensure_valid(something)
  ensure_valid(something_else)
  # ...
end

そのような例外はありますか?status 403そうでない場合、カスタム例外をキャッチした場合にリクエストを中止するように Sinatra (または Rack) を構成するにはどうすればよいですか?

4

2 に答える 2

3

halt 403 unless valid?(something) && valid?(something_else)も動作するはずです

ソース: http://www.sinatrarb.com/intro.html#Halting

于 2013-08-08T08:08:46.257 に答える