如何使用 Scotty / wai 设置 cookie?
How do I set a cookie with Scotty / wai?
我浏览了 Scotty 文档,但我只看到了设置 HTTP header 的能力,这似乎有点低级。
有没有更优雅的方法来实现这个?第三方库?
据我所知,一个解决方案是使用 Network.Wai.Util
中的 mapHeader
。但是就像提到的那样,这似乎很低。
还有 cookie
包,但它似乎 return 一个完全呈现的 cookie 'string' 而不是能够检索 key/value.
还有:https://hackage.haskell.org/package/HTTP-4000.3.9/docs/Network-HTTP-Cookie.html
但是好像没有Expiry参数?
https://hackage.haskell.org/package/scotty-cookie-0.1.0.3/docs/Web-Scotty-Cookie.html
https://hackage.haskell.org/package/cookie-0.4.3/docs/Web-Cookie.html
import Web.Cookie
import Web.Scotty.Cookie
setCookie $ defaultSetCookie { setCookieName = "example", setCookieValue = "cookieValue" }
功能其实出奇的简单:
setCookie :: (Monad m, ScottyError e)
=> SetCookie
-> ActionT e m ()
setCookie c = addHeader "Set-Cookie" (TL.decodeUtf8 . toLazyByteString $ renderSetCookie c)
我浏览了 Scotty 文档,但我只看到了设置 HTTP header 的能力,这似乎有点低级。
有没有更优雅的方法来实现这个?第三方库?
据我所知,一个解决方案是使用 Network.Wai.Util
中的 mapHeader
。但是就像提到的那样,这似乎很低。
还有 cookie
包,但它似乎 return 一个完全呈现的 cookie 'string' 而不是能够检索 key/value.
还有:https://hackage.haskell.org/package/HTTP-4000.3.9/docs/Network-HTTP-Cookie.html
但是好像没有Expiry参数?
https://hackage.haskell.org/package/scotty-cookie-0.1.0.3/docs/Web-Scotty-Cookie.html https://hackage.haskell.org/package/cookie-0.4.3/docs/Web-Cookie.html
import Web.Cookie
import Web.Scotty.Cookie
setCookie $ defaultSetCookie { setCookieName = "example", setCookieValue = "cookieValue" }
功能其实出奇的简单:
setCookie :: (Monad m, ScottyError e)
=> SetCookie
-> ActionT e m ()
setCookie c = addHeader "Set-Cookie" (TL.decodeUtf8 . toLazyByteString $ renderSetCookie c)