我有一个小的Yesod应用程序(使用脚手架)。我想为所有请求添加基本的HTTP身份验证。这是我到目前为止所尝试的:
isAuthorized
会很棒,但我看不到有办法阅读那里的标题。 这已经完成了吗?我该怎么做呢?
答案 0 :(得分:5)
我提出了一个非理想的解决方案:我将一个动作添加到我的所有处理函数中。也许这对某人有用,也许有人可以改进这一点。这是代码:
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 ()
如果发布更好的解决方案,我会非常乐意移动“已接受”的复选标记。