gpt4 book ai didi

authentication - yesod - 密码保护登台站点

转载 作者:行者123 更新时间:2023-12-04 04:27:49 28 4
gpt4 key购买 nike

我正在尝试设置我的 yesod 网络服务器的登台实例,我想知道是否有一些简单的方法可以保护整个站点的密码。具体来说,我希望能够提示那些导航到我的网站的人提供凭据。在他们进行身份验证后,它应该作为典型站点运行。但是,如果他们无法验证自己的身份,他们应该什么也看不到。

最佳答案

为了扩展@MichaelSnoyman 的回答,以下是我实现 WAI HTTP Auth 中间件的方法:

从脚手架站点,我去了Application.hs ,它已经设置了一些日志中间件,如下所示:

makeApplication :: AppConfig DefaultEnv Extra -> IO Application
makeApplication conf = do
foundation <- makeFoundation conf

-- Initialize the logging middleware
logWare <- mkRequestLogger def
{ outputFormat =
if development
then Detailed True
else Apache FromSocket
, destination = RequestLogger.Logger $ loggerSet $ appLogger foundation
}

-- Create the WAI application and apply middlewares
app <- toWaiAppPlain foundation
return $ logWare app

要添加 HTTP 身份验证,我引用了 Yesod 书的 chapter on WAIHttpAuth docs迈克尔提到的。文档将此作为使用 HttpAuth 中间件的示例:
basicAuth (\u p -> return $ u == "michael" && p == "mypass") "My Realm"

在应用日志中间件后,我能够将其粘贴到右下角:
import qualified Network.Wai.Middleware.HttpAuth as HttpAuth

makeApplication :: AppConfig DefaultEnv Extra -> IO Application
makeApplication conf = do
foundation <- makeFoundation conf

-- Initialize the logging middleware
logWare <- mkRequestLogger def
{ outputFormat =
if development
then Detailed True
else Apache FromSocket
, destination = RequestLogger.Logger $ loggerSet $ appLogger foundation
}

-- Create the WAI application and apply middlewares
app <- toWaiAppPlain foundation
return $ logWare $ HttpAuth.basicAuth (\u p -> return $ u == "michael" && p == "mypass") "My Realm" $ app

这是 Safari 中的样子:

HTTP auth browser screenshot

这种身份验证并不适合普通用户,但它非常适合锁定供内部使用的站点。这也是机器(监控服务器、脚本)向您的服务器进行身份验证的一种简单方法。

关于authentication - yesod - 密码保护登台站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770415/

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