Sobes.tech
Junior — Middle

Quali metodi hai utilizzato o conosci per implementare il processo di accesso dell'utente al sistema?

sobes.tech AI

Risposta dell'AI

Per implementare l'accesso di un utente in Go, si utilizzano generalmente i seguenti metodi:

  • Autenticazione tramite login e password con memorizzazione degli hash delle password (ad esempio bcrypt).
  • Uso di JWT (JSON Web Tokens) per creare un token di sessione dopo un login riuscito.
  • OAuth2 per l'autorizzazione tramite servizi di terze parti (Google, Facebook, ecc.).
  • Sessioni con cookie per applicazioni web.

Esempio di un semplice login con verifica della password:

import (
    "golang.org/x/crypto/bcrypt"
    "net/http"
)

func loginHandler(w http.ResponseWriter, r *http.Request) {
    username := r.FormValue("username")
    password := r.FormValue("password")

    // Ottenere l'hash della password dal database tramite username
    hashedPassword := getHashedPasswordFromDB(username)

    err := bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(password))
    if err != nil {
        http.Error(w, "Credenziali non valide", http.StatusUnauthorized)
        return
    }

    // Creare una sessione o JWT e inviarla al client
}

Il processo include quindi la verifica della password, la creazione del token o della sessione e la gestione dello stato dell'utente.