私は Suave アプリを作成していますが、元の IP がルートの承認済みリストにない場合は停止したいと考えています。このために、私は小さなフィルターを書きました:
let RemoteIp (ipList: System.Net.IPAddress List) (x: Http.HttpContext) =
if (ipList |> List.map (fun ip -> x.clientIpTrustProxy.Equals ip ) |> List.contains true)
then
async.Return (Some x)
else
async.Return None
それから私はうまくいきます
Filters.path "/cache" >=> RemoteIp authorizedIps >=> Filters.GET >=> Successful.OK ""
そのため、許可されたリストの IP からの場合にのみ通話を処理できます。そうでない場合は、そのまま続行します。しかし、私が本当にやりたいことは、403 を返すことです。現在、ルート検索を短絡しているだけです。
ブランチコンビネータのようなものはありますか?