我正在编写一个 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。现在我只是短路了路线搜索。
有没有类似分支组合器的东西?