Å sende en HTTP-forespørsel med grunnleggende autentisering

Elm:
Å sende en HTTP-forespørsel med grunnleggende autentisering

How to:

import Http
import Base64

type alias Model =
    { response : String }

basicAuth : String -> String -> Http.Header
basicAuth username password =
    let
        credentials =
            Base64.encode (username ++ ":" ++ password)
    in
    Http.header "Authorization" ("Basic " ++ credentials)

sendRequestWithBasicAuth : Cmd Msg
sendRequestWithBasicAuth =
    Http.get
        { url = "https://eksempel.com/data"
        , headers = [ basicAuth "brukernavn" "passord" ]
        }
        |> Http.expectWhatever ResponseHandler

Forventet output:

type Msg
    = ResponseHandler (Result Http.Error String)

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        ResponseHandler (Ok data) ->
            ( { model | response = data }, Cmd.none )

        ResponseHandler (Err _) ->
            ( { model | response = "Feil under henting av data." }, Cmd.none )

Deep Dive

Bakgrunnen for grunnleggende autentisering innen HTTP går tilbake til tidlig internett, hvor enkel tilgangssikring var nødvendig. Mens modernere metoder som OAuth 2.0 eller JWT (JSON Web Tokens) nå ofte er foretrukket for deres styrke og fleksibilitet, kan grunnleggende autentisering fortsatt være nyttig for enkel server-til-server kommunikasjon eller for små prosjekter som ikke krever avansert sikkerhet.

Når det gjelder implementering i Elm, bruker vi Http-pakken for å bygge og sende forespørsler, mens Base64-pakken hjelper oss med å kode brukernavn og passord. Husk at grunnleggende autentisering sender legitimasjonen i klartekst, bare kodet med Base64, så det bør alltid brukes over en sikker HTTPS-forbindelse.

See Also