【问题标题】:How can I use Yesod's authentication with websockets?如何将 Yesod 的身份验证与 websockets 一起使用?
【发布时间】:2014-01-23 15:55:27
【问题描述】:

我想在我的 Yesod 应用程序中使用 websockets。如果我对 websockets 包的理解是正确的,这意味着我需要定义一个 ServerApp,它是一个函数PendingConnection -> IO (),用于处理连接请求,然后使用我的 Warp 设置的 settingsIntercept 字段将其插入我的应用程序。如何使处理依赖于 Yesod 的身份验证?例如,如果我想拒绝以授权用户身份登录的客户端以外的连接,我如何检测当前登录的用户?由于我们不是在 Handler monad 中工作,似乎我们没有办法调用像 maybeAuthId 这样的函数。是手动查看连接请求标头的唯一选择吗?

【问题讨论】:

    标签: haskell websocket yesod


    【解决方案1】:

    无论您是否使用 websockets,您仍然必须使用会话来识别/授权服务器端的客户端。

    Websockets 可以替代您的 api 路由,但不能替代您的服务器中间件。

    当然,一旦客户端在您的服务器上尝试任何 HTTP 动词(get、post ...),您就可以处理诸如授权和中间件之类的事情,一旦 websocket 启动,就没有更多的中间件在运行并且客户端如果他已经登录,应该已经有一个可识别的会话,并且每次客户端通过 websocket 向服务器请求更多数据时,您都需要使用该会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 2013-02-10
      相关资源
      最近更新 更多