Recipe: HTTP Basic authentication

Goal: Protect routes with username/password.

open Suave
open Suave.Filters
open Suave.Operators
open Suave.Successful
open Suave.Authentication
open Suave.Files

let check (user, pwd) = user = "foo" && pwd = "bar"

let app = choose [
  GET >=> path "/public" >=> OK "public"
  authenticateBasic check (choose [
    GET >=> path "/secret" >=> OK "classified"
    GET >=> browseHome
  ])
]

startWebServer defaultConfig app

Guide: Validation & security.