SubApi -6ren">
gpt4 book ai didi

haskell - 使用带有仆人的自定义阅读器 Monad 进行身份验证

转载 作者:行者123 更新时间:2023-12-03 14:40:51 26 4
gpt4 key购买 nike

受基本身份验证保护的 API

type SubApi = API1 :<|> API2 :<|> API3
type API = BasicAuth "foo-realm" AuthData :> SubApi

支持 AuthData -> Handler a 类型的处理程序.

我有一组处理程序:
handler1 :: Request1 -> AuthMonad Response
handler2 :: Request2 -> AuthMonad Response

它在 AuthMonad 中运行,这是一个 ReaderT,其上下文部分由 AuthData 构建。
使用 enterAuthMonad :~> Handler , 我可以得到 Server API支持 AuthData -> AuthMonad 类型的处理程序,但我真正想做的是使用 AuthData参数作为 runReaderT 的环境。

我对 enter 的类型魔法还不够了解。了解如何做到这一点。有任何想法吗?

最佳答案

才意识到我把这个挂了。

大多数情况下,只是过度思考这个问题——答案很明显。
在上述情况下,我创建了一个可以创建自然变换的函数:

enterAuth :: AuthData -> AuthMonad :~> Handler

然后我在构建 ServerT 时使用它:
protectedServer :: AuthData -> ServerT ProtectedAPI Handler
protectedServer ad = enter (enterAuth ad) protectedServer'

在哪里
genAuthServerContext :: Context (AuthHandler Request AuthData ': '[])

关于haskell - 使用带有仆人的自定义阅读器 Monad 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37229098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com