Я пытался реализовать аутентификацию файлов cookie с использованием служебной аутентификации и использовать ее на своем веб-сайте. Я следил за README на сайте проекта GH https://github.com/haskell-servant/servant-auth и добавил простой Lucid HTML, содержащий форму, которая обращается к конечной точке входа в систему, а затем получает и сохраняет файл cookie в моем браузере.
data User = User String
deriving (Eq, Show, Generic)
data Credentials = Credentials {
credentialsUserName :: String,
credentialsPassword :: String
} deriving (Eq, Show, Read, Generic)
instance ToJSON Credentials
instance ToJSON User
instance ToJWT User
instance FromJSON Credentials
instance FromJSON User
instance FromJWT User
instance FromForm Credentials
type Unprotected =
"logMe" :> Get '[HTML] (Html ())
:<|> "login"
:> ReqBody '[FormUrlEncoded] Credentials
:> Verb 'POST 204 '[JSON] (Headers '[ Header "Set-Cookie" SetCookie, Header "Set-Cookie" SetCookie] NoContent)
type Protected
= "name" :> Get '[JSON] String
type AuthAPI =
(Servant.Auth.Server.Auth '[Cookie] User :> Protected)
:<|> Unprotected
Остальные части моего кода очень близки к фрагментам, представленным в README (при необходимости могу опубликовать). У меня проблемы с тем, что даже с файлом cookie в браузере я все еще не могу получить доступ к защищенной конечной точке. Я получаю AuthResult Indefinite. Я предполагаю, что мне не хватает крошечной части, которая отвечает за обработку файла cookie для преобразования пользователя. Как мне вписать это в мой код?