שליחת בקשת HTTP עם אימות בסיסי

Elm:
שליחת בקשת HTTP עם אימות בסיסי

איך לעשות:

import Http
import Base64

type Msg
    = GotData (Result Http.Error String)

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

sendRequest : Cmd Msg
sendRequest =
    Http.get
        { url = "https://example.com/protected-resource"
        , headers = basicAuth "myUsername" "myPassword"
        , expect = Http.expectString GotData
        }

כאן אתם רואים הגדרת הכותרות ושליחת בקשה עם אימות בסיסי. GotData הוא הודעה שמטפלת בתוצאה.

טבילה עמוקה

בעבר, אימות בסיסי בHTTP היה פופולרי לאימות פשוט כיוון שהוא קל ליישום. כיום, קיימות שיטות אימות חזקות יותר כמו OAuth 2.0, אבל אימות בסיסי עדיין בשימוש לצרכים מסוימים. בעיה עם אימות בסיסי היא ששם המשתמש והסיסמה מועברים בקוד מקור קל לחיקוי (base64) ולכן צריך לשלוח אותם תמיד מעל חיבור מאובטח (HTTPS).

כאשר מדובר בElm, הטיפול בHTTP מתבצע באמצעות חבילת Http הסטנדרטית. בפונקציה basicAuth, אנו בונים כותרות המכילות את האימות בBase64, ובפונקציה sendRequest אנו שולחים את הבקשה עצמה, מצפים לתשובה כטקסט ומשתמשים בהודעה כדי לטפל בסטטוס ובתשובה שנקבל.

ראו גם