Haskell YesSOD中的基本HTTP身份验证
我有一个很小的Yesod应用程序(使用scaffold)。我想向所有请求添加基本的HTTP身份验证。以下是我迄今为止所做的尝试:Haskell YesSOD中的基本HTTP身份验证,haskell,yesod,Haskell,Yesod,我有一个很小的Yesod应用程序(使用scaffold)。我想向所有请求添加基本的HTTP身份验证。以下是我迄今为止所做的尝试: 我已经阅读了关于YesSOD身份验证的文档,但不幸的是没有后端支持这一点 isAuthorized会很好,但我看不到一种读取标题的方法 WAI中间件应该很优雅,但我找不到任何文档描述如何将其与完整的YesSOD应用程序结合使用。同样很清楚的是,写一篇文章并不是一件小事 这已经完成了吗?我应该如何处理这个问题?我想出了一个不理想的解决方案:我在所有处理程序函数中预先
- 我已经阅读了关于YesSOD身份验证的文档,但不幸的是没有后端支持这一点李>
会很好,但我看不到一种读取标题的方法李>isAuthorized
- WAI中间件应该很优雅,但我找不到任何文档描述如何将其与完整的YesSOD应用程序结合使用。同样很清楚的是,写一篇文章并不是一件小事
这已经完成了吗?我应该如何处理这个问题?我想出了一个不理想的解决方案:我在所有处理程序函数中预先设置了一个操作。也许这对某人有用,也许有人可以改进。代码如下:
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"
如果发布了更好的解决方案,我将非常乐意移动“已接受”复选标记。我投了赞成票,因为我可能不得不自己做类似的事情,而你的例子是迄今为止我唯一能找到的东西。问这个问题已经有一段时间了,但因为这是谷歌上“YesSOD http basic auth”的最高结果我想告诉人们如何使用WAI中间件进行HTTP基本身份验证。
fooR :: Handler ()
fooR = httpBasicAuth >> do
sendResponseStatus status200 ()