gpt4 book ai didi

haskell - Yesod 中的基本 HTTP 身份验证

转载 作者:行者123 更新时间:2023-12-02 12:29:58 27 4
gpt4 key购买 nike

我有一个小型 Yesod 应用程序(使用脚手架)。我想为所有请求添加基本的 HTTP 身份验证。这是我迄今为止尝试过的:

  • 我已阅读有关 Yesod 身份验证的文档,但不幸的是没有后端支持此功能。
  • isAuthorized 会很棒,但我看不到在那里读取标题的方法。
  • WAI 中间件会很优雅,但我找不到任何描述如何将其与完整 Yesod 应用程序一起使用的文档。很明显,编写一个并不是完全微不足道的。

这已经完成了吗?我应该如何处理这个问题?

最佳答案

我想出了一个不理想的解决方案:我在所有处理函数前面添加一个操作。也许它对某人有用,也许有人可以对此进行改进。代码如下:

httpBasicAuth :: Handler ()
httpBasicAuth = do
request <- waiRequest
case lookup "Authorization" (requestHeaders request) of
Just "Basic base64encodedusernameandpassword" -> return ()
_ -> do
setHeader "WWW-Authenticate" "Basic Realm=\"My Realm\""
permissionDenied "Authentication required"

并使用它:

fooR :: Handler ()
fooR = httpBasicAuth >> do
sendResponseStatus status200 ()

如果发布了更好的解决方案,我将非常乐意移动“已接受”复选标记。

关于haskell - Yesod 中的基本 HTTP 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12128474/

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