目前,我有这样的东西:
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
有这样的例外吗?如果没有,如果Sinatra(或Rack)捕获到自定义异常,我如何配置它以中止status 403
请求?
halt 403 unless valid?(something) && valid?(something_else)
也应该工作于
来源:http://www.sinatrarb.com/intro.html#Halting
也许您要查找的是"error"块?
http://www.sinatrarb.com/intro.html#Error
error MyCustomError do
return status 403
end
raise MyCustomError unless valid?(thing)