小编Bia*_*rto的帖子

如何向 Scotty 中间件添加基本身份验证?

我目前正在制作 Scotty API,但找不到任何 basicAuth 实现的示例(Wai Middleware HttpAuth)。

具体来说,我想将基本身份验证标头(用户、通行证)添加到我的某些端点(即以“admin”开头的端点)。我已设置好所有内容,但我似乎无法区分哪些端点需要身份验证,哪些端点不需要。我知道我需要使用这样的东西,但它使用 Yesod,我无法将其翻译为 Scotty。

到目前为止,我有这个:

routes :: (App r m) => ScottyT LText m ()
routes = do
  -- middlewares
  middleware $ cors $ const $ Just simpleCorsResourcePolicy
    { corsRequestHeaders = ["Authorization", "Content-Type"]
    , corsMethods = "PUT":"DELETE":simpleMethods
    }
    
  middleware $ basicAuth 
      (\u p -> return $ u == "username" && p == "password") 
      "My Realm" 
  
  -- errors
  defaultHandler $ \str -> do
    status status500
    json str

  -- feature routes
  ItemController.routes
  ItemController.adminRoutes
  
  -- …
Run Code Online (Sandbox Code Playgroud)

authentication haskell functional-programming middleware scotty

5
推荐指数
1
解决办法
468
查看次数