FSharp Suave-如何在响应中设置cookie



我在Suave中配置了一个简单的HTTP服务器,如下所示。

open System
open Suave
open Suave.Operators
open Suave.Filters
open Suave.Successful
[<EntryPoint>]
let main argv =

let httpPort = 9000
let httpConfig = {
defaultConfig with bindings = [ HttpBinding.createSimple HTTP "0.0.0.0" httpPort ]
}
let httpApp = 
choose
[ POST >=> choose

[ 
path "/login" >=> 
request (fun ctx -> 
let sessionId = someLoginLogic
) 
]

]
startWebServer httpConfig httpApp

在这里,我有一个登录端点,它将生成一个随机会话id,我想在带有HttpOnly和Secure标志的cookie中设置该会话id。

在Suave中设置cookie的典型方法是通过其cookie状态存储,如本文所述:

statefulForSession
>=> setSessionValue "sessionId" someLoginLogic

但是,这并不能显式地设置cookie的securehttpOnly标志。如果你想这样做,我认为你可以手动这样做:

statefulForSession
>=> Suave.Cookie.setCookie (
HttpCookie.create "sessionId" someLoginLogic None None None true true None)

最新更新