Sobes.tech
Junior — Middle

Que métodos utilizou ou conhece para implementar o processo de login do usuário no sistema?

sobes.tech IA

Resposta da IA

Para implementar o login de um utilizador em Go, normalmente utilizam-se os seguintes métodos:

  • Autenticação por login e palavra-passe com armazenamento de hashes de palavras-passe (por exemplo, bcrypt).
  • Uso de JWT (JSON Web Tokens) para criar um token de sessão após um login bem-sucedido.
  • OAuth2 para autorização através de serviços externos (Google, Facebook, etc.).
  • Sessões com cookies para aplicações web.

Exemplo de um login simples com verificação de palavra-passe:

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

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

    // Obter o hash da palavra-passe da base de dados pelo username
    hashedPassword := getHashedPasswordFromDB(username)

    err := bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(password))
    if err != nil {
        http.Error(w, "Credenciais inválidas", http.StatusUnauthorized)
        return
    }

    // Criar uma sessão ou JWT e enviá-la ao cliente
}

Assim, o processo inclui a verificação da palavra-passe, a criação do token ou sessão e a gestão do estado do utilizador.