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 ή της συνεδρίας και τη διαχείριση της κατάστασης του χρήστη.