Sobes.tech
Junior — Middle

Ce metode ați folosit sau cunoașteți pentru implementarea procesului de autentificare a utilizatorului în sistem?

sobes.tech AI

Răspuns de la AI

Pentru implementarea autentificării utilizatorului în Go, se utilizează de obicei următoarele metode:

  • Autentificare prin login și parolă cu stocarea hash-urilor parolelor (de exemplu, bcrypt).
  • Utilizarea JWT (JSON Web Tokens) pentru crearea unui token de sesiune după o autentificare reușită.
  • OAuth2 pentru autorizare prin servicii terțe (Google, Facebook etc.).
  • Sesiuni cu cookie-uri pentru aplicații web.

Exemplu de login simplu cu verificarea parolei:

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

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

    // Obține hash-ul parolei din baza de date pe baza username-ului
    hashedPassword := getHashedPasswordFromDB(username)

    err := bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(password))
    if err != nil {
        http.Error(w, "Credențiale invalide", http.StatusUnauthorized)
        return
    }

    // Creează o sesiune sau JWT și trimite-o clientului
}

Procesul include verificarea parolei, crearea token-ului sau sesiunii și gestionarea stării utilizatorului.