Sobes.tech
Junior — Middle

Ποια μέθοδο χρησιμοποιήσατε ή γνωρίζετε για την υλοποίηση της διαδικασίας εισόδου του χρήστη στο σύστημα;

sobes.tech AI

Απάντηση από AI

Για την υλοποίηση της σύνδεσης χρήστη σε Go, συνήθως χρησιμοποιούνται οι ακόλουθες μέθοδοι:

  • Αυθεντικοποίηση μέσω ονόματος χρήστη και κωδικού πρόσβασης με αποθήκευση των hashes των κωδικών (π.χ., bcrypt).
  • Χρήση JWT (JSON Web Tokens) για δημιουργία ενός token συνεδρίας μετά από επιτυχημένη σύνδεση.
  • OAuth2 για εξουσιοδότηση μέσω τρίτων υπηρεσιών (Google, Facebook κ.λπ.).
  • Συνεδρίες με cookies για web εφαρμογές.

Παράδειγμα απλής σύνδεσης με έλεγχο κωδικού:

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

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

    // Λήψη του hash του κωδικού από τη βάση δεδομένων βάσει του username
    hashedPassword := getHashedPasswordFromDB(username)

    err := bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(password))
    if err != nil {
        http.Error(w, "Μη έγκυρα διαπιστευτήρια", http.StatusUnauthorized)
        return
    }

    // Δημιουργία συνεδρίας ή JWT και αποστολή στον πελάτη
}

Η διαδικασία περιλαμβάνει τον έλεγχο του κωδικού, τη δημιουργία του token ή της συνεδρίας και τη διαχείριση της κατάστασης του χρήστη.