Haskell 仅在用户登录时接受WAI Websocket请求

Haskell 仅在用户登录时接受WAI Websocket请求,haskell,authentication,websocket,haskell-warp,Haskell,Authentication,Websocket,Haskell Warp,我正在使用(版本),我只想在用户已登录的情况下打开套接字。我有一个中间件,负责所有的身份验证问题,如果用户登录,会在WAI请求的页面中放置一条user记录 是否有某种方法可以从访问WAI请求,或者在启动前检查请求,并将用户值传递到中?以下基本结构将允许您在将控制传递到WebSocket之前分析请求,如果需要,允许您将请求值传递到服务器应用程序: #!/usr/bin/env stack -- stack --resolver lts-9.3 script {-# LANGUAGE Overloa

我正在使用(版本),我只想在用户已登录的情况下打开套接字。我有一个中间件,负责所有的身份验证问题,如果用户登录,会在WAI请求的页面中放置一条
user
记录


是否有某种方法可以从访问WAI
请求
,或者在启动前检查
请求
,并将
用户
值传递到中?

以下基本结构将允许您在将控制传递到WebSocket之前分析
请求
,如果需要,允许您将
请求
值传递到
服务器应用程序

#!/usr/bin/env stack
-- stack --resolver lts-9.3 script
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Handler.Warp
import Network.Wai.Handler.WebSockets
import Network.HTTP.Types
import Network.WebSockets.Connection

main :: IO ()
main = run 3000 $ \req send ->
case websocketsApp defaultConnectionOptions _serverApp req of
    Nothing -> send $ responseLBS status200 [] "Websockets not supported"
    Just res -> send res

以下基本结构允许您在将控制权传递给WebSocket之前分析
请求
,并允许您根据需要将
请求
值传递到
服务器应用程序

#!/usr/bin/env stack
-- stack --resolver lts-9.3 script
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Handler.Warp
import Network.Wai.Handler.WebSockets
import Network.HTTP.Types
import Network.WebSockets.Connection

main :: IO ()
main = run 3000 $ \req send ->
case websocketsApp defaultConnectionOptions _serverApp req of
    Nothing -> send $ responseLBS status200 [] "Websockets not supported"
    Just res -> send res