После успешного входа в систему servant-auth устанавливает в ответ файл cookie JWT-Cookie
.Проблема в том, что он также помечает cookie как HttpOnly
, что означает, что я не могу прочитать JWT в своем одностраничном приложении.Насколько я понимаю, это можно настроить с помощью типа данных SetCookie.Я смог создать свой собственный SetCookie
, используя defaultSetCookie { setCookieHttpOnly = False }
.Как мне вставить это в функцию acceptLogin
?
Вот мой обработчик для входа в систему.
checkCreds :: CookieSettings
-> JWTSettings
-> LoginRequest
-> App (Headers '[ Header "Set-Cookie" SetCookie
, Header "Set-Cookie" SetCookie ]
NoContent)
checkCreds cookieSettings jwtSettings LoginRequest{email = email, rawPassword = rawPassword} = do
maybeUser <- logicForFetchingAndValidatingUser
-- What do I do with this mySetCookie?
let mySetCookie = defaultSetCookie { setCookieHttpOnly = False }
case maybeUser of
Just userView -> do
mApplyCookies <- liftIO $ acceptLogin cookieSettings jwtSettings userView
case mApplyCookies of
Nothing -> throwError err401
Just applyCookies -> return $ applyCookies NoContent
Nothing -> throwError err401