6

Sto usando Yesod per creare un backend puramente REST per un'applicazione basata su Angular. Questa applicazione sarà ospitata separatamente con un CDN e dovrà connettersi all'apet Yesod e ad alcuni altri. C'è un modo per fare sì che Yesod accetti un token Bearer invece di usare una sessione di cookie per l'autenticazione?Yesod Sessionless Authentication

risposta

12

Facciamo qualcosa di simile su www.fpcomplete.com. È possibile farlo sovrascrivendo il metodo maybeAuthId nella classe di caratteri YesodAuth per verificare il token Bearer. Per fpcomplete.com, controlliamo l'intestazione di una richiesta di autorizzazione, che assomiglia a qualcosa:

req <- waiRequest 
mUserId <- 
    case lookup "authorization" (requestHeaders req) of 
     Nothing -> doNormalAuthentication 
     Just authHeader -> checkAuthHeader