Maison développement back-end Golang Utiliser JWT pour implémenter l'authentification dans Beego

Utiliser JWT pour implémenter l'authentification dans Beego

Jun 22, 2023 pm 12:44 PM
jwt 身份验证 beego

Avec le développement rapide d'Internet et de l'Internet mobile, de plus en plus d'applications nécessitent une authentification et un contrôle des autorisations, et JWT (JSON Web Token), en tant que mécanisme léger d'authentification et d'autorisation, est largement utilisé dans les applications WEB.

Beego est un framework MVC basé sur le langage Go, qui présente les avantages d'efficacité, de simplicité et d'évolutivité. Cet article présentera comment utiliser JWT pour implémenter l'authentification dans Beego.

1. Introduction à JWT

JSON Web Token (JWT) est un standard ouvert (RFC 7519) permettant de transmettre des informations d'identité et de réclamation sur le réseau. Il peut transférer en toute sécurité des informations entre différents systèmes car il peut crypter et signer numériquement les informations. Un JWT se compose de trois parties : en-tête, revendication et signature. Lorsque les en-têtes et les revendications sont codés en base64, la signature utilise une clé pour chiffrer les données.

2. Beego intègre JWT

1. Installer les dépendances

Nous devons d'abord installer deux packages de dépendances :

aller chercher github.com/dgrijalva/jwt-go
aller chercher github.com/astaxie/beego

2. .Créer une classe d'outils JWT

Nous pouvons créer une classe d'outils JWT en encapsulant les opérations JWT, qui est utilisée pour générer et vérifier JWT et d'autres opérations. Celles-ci incluent des méthodes telles que l'émission de jetons, la vérification des jetons et l'obtention d'informations stockées dans les jetons. Le code est le suivant :

package utils

import (
    "errors"
    "github.com/dgrijalva/jwt-go"
    "time"
)

// JWT构造体
type JWT struct {
    signingKey []byte
}

// 定义JWT参数
type CustomClaims struct {
    UserID   string `json:"userId"`
    UserName string `json:"userName"`
    jwt.StandardClaims
}

// 构造函数
func NewJWT() *JWT {
    return &JWT{
        []byte("jwt-secret-key"),
    }
}

// 生成token
func (j *JWT) CreateToken(claims CustomClaims) (string, error) {
    token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)

    return token.SignedString(j.signingKey)
}

// 解析token
func (j *JWT) ParseToken(tokenString string) (*CustomClaims, error) {
    token, err := jwt.ParseWithClaims(tokenString, &CustomClaims{}, func(token *jwt.Token) (interface{}, error) {
        if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
            return nil, errors.New("签名方法不正确")
        }
        return j.signingKey, nil
    })

    if err != nil {
        return nil, err
    }

    if claims, ok := token.Claims.(*CustomClaims); ok && token.Valid {
        return claims, nil
    }

    return nil, errors.New("无效的token")
}
Copier après la connexion

3. Utilisez JWT pour l'authentification

Dans Beego, nous pouvons utiliser un middleware pour vérifier l'identité de l'utilisateur, par exemple :

package controllers

import (
    "myProject/utils"
    "github.com/astaxie/beego"
    "github.com/dgrijalva/jwt-go"
)

type BaseController struct {
    beego.Controller
}

type CustomClaims struct {
    UserID   string `json:"userId"`
    UserName string `json:"userName"`
    jwt.StandardClaims
}

func (c *BaseController) Prepare() {
    // 获取请求头中的token
    tokenString := c.Ctx.Request.Header.Get("Authorization")

    // 创建JWT实例
    jwt := utils.NewJWT()

    // 解析token,获取token中存储的用户信息
    claims, err := jwt.ParseToken(tokenString)

    if err != nil {
        c.Data["json"] = "无效的token"
        c.ServeJSON()
        return
    }

    // 验证token中的用户信息
    if claims.UserID != "123456" || claims.UserName != "test" {
        c.Data["json"] = "用户信息验证失败"
        c.ServeJSON()
        return
    }
}
Copier après la connexion

Dans le code ci-dessus, nous récupérons d'abord le token dans l'en-tête de la requête. , puis analysez le jeton via JWT pour obtenir les informations utilisateur qui y sont stockées. Enfin, nous vérifions les informations utilisateur contenues dans le jeton avec les informations utilisateur stockées dans notre base de données. Ce n'est qu'après avoir réussi la vérification que nous pouvons accéder normalement aux interfaces concernées.

3. Résumé

Grâce aux étapes ci-dessus, nous avons intégré avec succès le mécanisme d'authentification JWT et implémenté la vérification de l'identité des utilisateurs, le contrôle des autorisations et d'autres opérations dans l'application Beego. Cependant, il convient de noter que dans les applications réelles, nous devons garantir la sécurité de la clé JWT et nous devons également déterminer si les informations stockées dans le JWT sont raisonnables.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment désactiver l'authentification de navigation privée dans Safari : guide pratique pour iOS 17 Comment désactiver l'authentification de navigation privée dans Safari : guide pratique pour iOS 17 Sep 11, 2023 pm 06:37 PM

Dans iOS 17, Apple a introduit plusieurs nouvelles fonctionnalités de confidentialité et de sécurité dans son système d'exploitation mobile, dont la possibilité d'exiger une authentification en deux étapes pour les onglets de navigation privée dans Safari. Voici comment cela fonctionne et comment le désactiver. Sur un iPhone ou un iPad exécutant iOS 17 ou iPadOS 17, si un onglet de navigation privée est ouvert dans Safari, puis quittez la session ou l'application, le navigateur d'Apple nécessite désormais une authentification Face ID/TouchID ou un mot de passe pour y accéder à nouveau. En d'autres termes, si quelqu'un met la main sur votre iPhone ou iPad alors qu'il est déverrouillé, il ne pourra toujours pas le voir sans connaître votre code d'accès.

Analyse de la technologie sécurisée de génération et de vérification de jetons JWT en PHP Analyse de la technologie sécurisée de génération et de vérification de jetons JWT en PHP Jul 01, 2023 pm 06:06 PM

Analyse de la technologie sécurisée de génération et de vérification de jetons JWT en PHP Avec le développement des applications réseau, l'authentification et l'autorisation des utilisateurs deviennent de plus en plus importantes. JsonWebToken (JWT) est un standard ouvert (RFC7519) permettant de transmettre en toute sécurité des informations dans les applications Web. Dans le développement PHP, il est devenu courant d'utiliser des jetons JWT pour l'authentification et l'autorisation des utilisateurs. Cet article présentera la technologie sécurisée de génération et de vérification de jetons JWT en PHP. 1. Connaissance de base de JWT pour comprendre comment générer et

OAuth en PHP : créer un serveur d'autorisation JWT OAuth en PHP : créer un serveur d'autorisation JWT Jul 28, 2023 pm 05:27 PM

OAuth en PHP : création d'un serveur d'autorisation JWT Avec l'essor des applications mobiles et la tendance à la séparation du front-end et du back-end, OAuth est devenu un élément indispensable des applications Web modernes. OAuth est un protocole d'autorisation qui protège les ressources des utilisateurs contre tout accès non autorisé en fournissant des processus et des mécanismes standardisés. Dans cet article, nous apprendrons comment créer un serveur d'autorisation OAuth basé sur JWT (JSONWebTokens) à l'aide de PHP. JWT est un type de

Implémentation de l'authentification des utilisateurs à l'aide d'un middleware dans le framework Slim Implémentation de l'authentification des utilisateurs à l'aide d'un middleware dans le framework Slim Jul 29, 2023 am 10:22 AM

Implémentation de l'authentification des utilisateurs à l'aide d'un middleware dans le framework Slim Avec le développement des applications Web, l'authentification des utilisateurs est devenue une fonctionnalité cruciale. Afin de protéger les informations personnelles et les données sensibles des utilisateurs, nous avons besoin d'une méthode fiable pour vérifier l'identité de l'utilisateur. Dans cet article, nous présenterons comment implémenter l’authentification des utilisateurs à l’aide du middleware du framework Slim. Le framework Slim est un framework PHP léger qui fournit un moyen simple et rapide de créer des applications Web. L'une des fonctionnalités puissantes est le milieu

Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Jan 30, 2024 am 09:08 AM

À l'ère actuelle de développement technologique rapide, les langages de programmation poussent comme des champignons après la pluie. L'un des langages qui a beaucoup retenu l'attention est le langage Go, apprécié par de nombreux développeurs pour sa simplicité, son efficacité, sa sécurité de concurrence et d'autres fonctionnalités. Le langage Go est connu pour son écosystème solide avec de nombreux excellents projets open source. Cet article présentera cinq projets open source sélectionnés en langage Go et amènera les lecteurs à explorer le monde des projets open source en langage Go. KubernetesKubernetes est un moteur d'orchestration de conteneurs open source pour l'automatisation

Authentification basée sur des jetons avec Angular et Node Authentification basée sur des jetons avec Angular et Node Sep 01, 2023 pm 02:01 PM

L'authentification est l'une des parties les plus importantes de toute application Web. Ce didacticiel traite des systèmes d'authentification basés sur des jetons et de leurs différences par rapport aux systèmes de connexion traditionnels. À la fin de ce didacticiel, vous verrez une démo entièrement fonctionnelle écrite en Angular et Node.js. Systèmes d'authentification traditionnels Avant de passer aux systèmes d'authentification basés sur des jetons, examinons les systèmes d'authentification traditionnels. L'utilisateur fournit son nom d'utilisateur et son mot de passe dans le formulaire de connexion et clique sur Connexion. Après avoir effectué la demande, authentifiez l'utilisateur sur le backend en interrogeant la base de données. Si la demande est valide, une session est créée à l'aide des informations utilisateur obtenues à partir de la base de données et les informations de session sont renvoyées dans l'en-tête de réponse afin que l'ID de session soit stocké dans le navigateur. Donne accès aux applications soumises à

Déploiement et gestion de production à l'aide de Docker et Kubernetes dans Beego Déploiement et gestion de production à l'aide de Docker et Kubernetes dans Beego Jun 23, 2023 am 08:58 AM

Avec le développement rapide d’Internet, de plus en plus d’entreprises ont commencé à migrer leurs applications vers des plateformes cloud. Docker et Kubernetes sont devenus deux outils très populaires et puissants pour le déploiement et la gestion d'applications sur les plateformes cloud. Beego est un framework Web développé à l'aide de Golang. Il fournit des fonctions riches telles que le routage HTTP, la superposition MVC, la journalisation, la gestion de la configuration et la gestion des sessions. Dans cet article, nous expliquerons comment utiliser Docker et Kub

Comment implémenter l'authentification et l'autorisation dans les applications PHP à l'aide de JWT Comment implémenter l'authentification et l'autorisation dans les applications PHP à l'aide de JWT Aug 03, 2023 pm 10:17 PM

Comment utiliser JWT pour implémenter l'authentification et l'autorisation dans les applications PHP Introduction : Avec le développement rapide d'Internet, l'authentification et l'autorisation deviennent de plus en plus importantes dans les applications Web. JSONWebToken (JWT) est un mécanisme d'authentification et d'autorisation populaire largement utilisé dans les applications PHP. Cet article expliquera comment utiliser JWT pour implémenter l'authentification et l'autorisation dans les applications PHP, et fournira des exemples de code pour aider les lecteurs à mieux comprendre l'utilisation de JWT. 1. Introduction à JWTJSONWebTo

See all articles