Maison >développement back-end >Golang >Comment implémenter une saisie de mot de passe sans écho dans Go ?

Comment implémenter une saisie de mot de passe sans écho dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-29 17:03:10764parcourir

How to Implement Non-Echoing Password Entry in Go?

Saisie de mot de passe sans écho dans Go

Situation :

Récupération d'un mot de passe de l'utilisateur sans afficher les caractères saisis est une exigence courante. Comment cela peut-il être réalisé dans Go ?

Solution :

Go n'offre pas directement de fonctionnalité getpasswd. Cependant, l'approche suivante accomplit efficacement la tâche :

Détails de mise en œuvre

  1. Désactiver l'écho : Pour supprimer l'écho des caractères, le terme package est importé. term.ReadPassword est utilisé pour lire le mot de passe tout en masquant les entrées de l'utilisateur.
  2. Obtenir le nom d'utilisateur : Le script demande à l'utilisateur un nom d'utilisateur à l'aide de fmt.Print. Le bufio.NewReader est utilisé pour lire le nom d'utilisateur.
  3. Obtenir le mot de passe : term.ReadPassword est utilisé pour obtenir le mot de passe après l'avoir demandé à l'utilisateur. Les mots de passe saisis par l'utilisateur ne sont pas visibles dans la console.
  4. Couper les espaces : Le nom d'utilisateur et le mot de passe obtenus sont coupés pour supprimer tout espace de début ou de fin.

Exemple :

package main

import (
    "bufio"
    "fmt"
    "golang.org/x/term"
    "os"
    "strings"
)

func main() {
    u, p, _ := credentials()
    fmt.Printf("Username: %s, Password: %s\n", u, p)
}

func credentials() (string, string, error) {
    fmt.Print("Enter Username: ")
    r := bufio.NewReader(os.Stdin)
    u, err := r.ReadString('\n')
    if err != nil {
        return "", "", err
    }

    fmt.Print("Enter Password: ")
    bp, err := term.ReadPassword(int(syscall.Stdin))
    if err != nil {
        return "", "", err
    }

    p := string(bp)
    return strings.TrimSpace(u), strings.TrimSpace(p), nil
}

Cet extrait de code démontre le processus d'obtention du nom d'utilisateur et du mot de passe de l'utilisateur sans afficher les caractères du mot de passe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn