我在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的secure
和httpOnly
标志。如果你想这样做,我认为你可以手动这样做:
statefulForSession
>=> Suave.Cookie.setCookie (
HttpCookie.create "sessionId" someLoginLogic None None None true true None)