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.