Maison développement back-end Golang Implémenter la connexion tierce à l'aide de Beego et OAuth2

Implémenter la connexion tierce à l'aide de Beego et OAuth2

Jun 22, 2023 pm 08:34 PM
oauth 第三方登录 beego

Avec le développement rapide d'Internet, la connexion par un tiers est devenue un élément indispensable de la vie en ligne. La connexion tierce offre aux utilisateurs une méthode de connexion plus pratique, plus rapide et plus sûre, et est plus populaire que la méthode de connexion par enregistrement traditionnelle. Actuellement, les connexions tierces sur le marché incluent principalement les grandes plateformes sociales telles que QQ, WeChat et Weibo. Comment mettre en œuvre rapidement la fonction de connexion tierce ? Cet article explique comment utiliser Beego et OAuth2 pour implémenter une fonctionnalité de connexion tierce.

1. Introduction à Beego

Beego est un framework de programmation open source et rapide. Il est très flexible et extensible et fournit un grand nombre d'outils et de bibliothèques. Beego peut aider les développeurs à créer rapidement des applications Web et fournit des fonctionnalités importantes, telles que la gestion automatique des itinéraires, le système de modèles et le service de fichiers statiques.

2. Introduction au protocole OAuth2

OAuth2 est un protocole-cadre d'autorisation qui permet aux utilisateurs d'autoriser d'autres applications sans partager de mots de passe et d'autres informations sensibles à des programmes tiers. services de fête en leur nom. Ce protocole définit quatre rôles : propriétaire de ressources, serveur de ressources, client et serveur d'authentification. Parmi eux, le propriétaire de la ressource fait référence à l'utilisateur disposant de droits d'accès, le serveur de ressources fait référence au serveur qui héberge les ressources d'informations, le client fait référence au logiciel qui demande l'accès aux ressources protégées et le serveur d'authentification fait référence à la vérification des informations du client. identité et autoriser l’accès aux ressources protégées.

3. Utilisez Beego et OAuth2 pour implémenter la connexion tierce

  1. Créer un projet Beego

Tout d'abord, nous besoin de créer un projet Beego pour le développement et les tests locaux. Utilisez la commande suivante (Beego doit d'abord être installé) :

bee new thirdpartylogin
Copier après la connexion
  1. Installer les bibliothèques nécessaires

Nous devons installer certaines bibliothèques nécessaires, notamment github.com/astaxie/beego et github.com/astaxie/beego/orm peuvent être installés à l'aide de la commande suivante : github.com/astaxie/beegogithub.com/astaxie/beego/orm,可以使用以下命令安装:

go get github.com/astaxie/beego
go get github.com/astaxie/beego/orm
Copier après la connexion
  1. 创建数据库

我们需要创建一个数据库,以便存储用户信息和第三方登录信息。可以使用 MySQL 或 PostgreSQL 数据库。在本文中,我们使用 MySQL 数据库。以下是创建用户表和第三方登录表的 SQL 语句:

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `password` varchar(128) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `oauth` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) unsigned NOT NULL,
  `provider` varchar(64) NOT NULL,
  `provider_user_id` varchar(64) NOT NULL,
  `access_token` varchar(128) NOT NULL,
  `refresh_token` varchar(128) NOT NULL,
  `expire_at` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Copier après la connexion
  1. 配置第三方登录

我们需要使用第三方登录进行认证。目前市面上有多种第三方登录方式,包括 QQ、微信、微博等大型社交平台。我们以 QQ 登录为例进行讲解。

首先,我们需要在 QQ 互联开放平台(https://connect.qq.com/)注册一个应用程序,以获得App IDApp Key。其次,我们需要在 Beego 项目中添加如下代码,获取用户授权:

func QQLogin(c *beego.Controller) {
    var state = c.GetString("state")
    var oauth = conf.GetQQOAuthConfig(state)

    authURL := oauth.AuthCodeURL(state)
    c.Redirect(http.StatusTemporaryRedirect, authURL)
} 
Copier après la connexion

在以上代码中,state参数用于识别用户请求,oauth对象包含了 QQ 登录所需的配置信息。我们使用AuthCodeURL方法生成授权地址,并将用户重定向至授权页面。

接着,我们需要添加如下代码,接收 QQ 回调请求并获取访问令牌:

func QQLoginCallback(c *beego.Controller) {
    var state = c.GetString("state")
    var code = c.GetString("code")
    var oauth = conf.GetQQOAuthConfig(state)

    token, err := oauth.Exchange(context.TODO(), code)
    if err != nil {
        log.Println(err)
        c.Abort("500")
    }

    data, err := fetchQQUserInfo(token.AccessToken)
    if err != nil {
        log.Println(err)
        c.Abort("500")
    }

    openid := data.GetString("openid")
    if openid == "" {
        log.Println("openid is blank")
        c.Abort("500")
    }

    account := models.GetAccountByProvider("qq", openid)
    if account != nil {
        _ = models.UpdateAccountAccessToken(account, token.AccessToken)
        c.Redirect(http.StatusTemporaryRedirect, "/")
    } else {
        err := models.CreateAccount("qq", openid, token.AccessToken)
        if err != nil {
            log.Println(err)
            c.Abort("500")
        }

        c.Redirect(http.StatusTemporaryRedirect, "/")
    }
}
Copier après la connexion

在以上代码中,我们使用Exchange方法获取访问令牌,使用fetchQQUserInfo方法获取 QQ 用户信息,其中openid

func AuthRequired(handler http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        sess, err := store.Get(r, "session")
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }

        if _, ok := sess.Values["user_id"]; !ok {
            w.Header().Set("Location", "/login")
            w.WriteHeader(http.StatusSeeOther)
            return
        }

        handler.ServeHTTP(w, r)
    })
}
Copier après la connexion
    # 🎜🎜#Créer une base de données
    1. Nous devons créer une base de données pour stocker les informations des utilisateurs et les informations de connexion de tiers. Vous pouvez utiliser des bases de données MySQL ou PostgreSQL. Dans cet article, nous utilisons la base de données MySQL. Voici l'instruction SQL permettant de créer la table utilisateur et la table de connexion tierce :
    2. rrreee
        Configuration de la connexion tierce

        #🎜 🎜#Nous devons utiliser une connexion tierce pour l'authentification. Il existe actuellement diverses méthodes de connexion tierces sur le marché, notamment de grandes plateformes sociales telles que QQ, WeChat et Weibo. Prenons l'exemple de la connexion QQ pour expliquer.

        Tout d'abord, nous devons enregistrer une application sur la plateforme ouverte Internet QQ (https://connect.qq.com/) pour obtenir l'App ID et le Clé d'application. Deuxièmement, nous devons ajouter le code suivant au projet Beego pour obtenir l'autorisation de l'utilisateur :

        rrreee

        Dans le code ci-dessus, le paramètre state est utilisé pour identifier la demande de l'utilisateur, oauth contient les informations de configuration requises pour la connexion QQ. Nous utilisons la méthode <code>AuthCodeURL pour générer l'adresse d'autorisation et rediriger l'utilisateur vers la page d'autorisation.

        Ensuite, nous devons ajouter le code suivant pour recevoir la demande de rappel QQ et obtenir le jeton d'accès : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous utilisons Exchange Méthode pour obtenir le jeton d'accès, utilisez la méthode <code>fetchQQUserInfo pour obtenir les informations sur l'utilisateur QQ, où openid est utilisé pour identifier de manière unique l'utilisateur QQ. Ensuite, nous vérifions si l'enregistrement utilisateur QQ existe dans la base de données, et si c'est le cas, mettons à jour son jeton d'accès, sinon créons un nouvel enregistrement de compte. #🎜🎜##🎜🎜##🎜🎜#Authentification et autorisation#🎜🎜##🎜🎜##🎜🎜#Enfin, nous devons ajouter la fonction d'authentification et d'autorisation pour garantir que l'utilisateur s'est connecté et autorisé via un tierce personne. #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous vérifions si l'ID utilisateur existe dans la session, sinon nous redirigeons vers la page de connexion, sinon nous continuons le traitement de la demande. #🎜🎜##🎜🎜#4. Résumé#🎜🎜##🎜🎜#Cet article explique comment utiliser Beego et OAuth2 pour implémenter la connexion tierce. Nous utilisons la connexion QQ comme exemple pour présenter comment obtenir l'autorisation de l'utilisateur, obtenir des jetons d'accès, vérifier les enregistrements des utilisateurs et d'autres fonctions. L'utilisation de Beego et OAuth2 pour implémenter la fonction de connexion tierce peut fournir aux utilisateurs une méthode de connexion plus pratique, plus rapide et plus sûre, et peut également offrir aux développeurs une expérience de développement plus efficace et meilleure. #🎜🎜#

    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)
    1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
    Will R.E.P.O. Vous avez un jeu croisé?
    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)

    PHP et OAuth : implémentation de l'intégration de connexion Microsoft PHP et OAuth : implémentation de l'intégration de connexion Microsoft Jul 28, 2023 pm 05:15 PM

    PHP et OAuth : mise en œuvre de l'intégration de la connexion Microsoft Avec le développement d'Internet, de plus en plus de sites Web et d'applications doivent permettre aux utilisateurs de se connecter à l'aide de comptes tiers afin de fournir une expérience d'enregistrement et de connexion pratique. Le compte Microsoft est l'un des comptes les plus utilisés dans le monde et de nombreux utilisateurs souhaitent utiliser un compte Microsoft pour se connecter à des sites Web et à des applications. Afin de réaliser l'intégration de la connexion Microsoft, nous pouvons utiliser le protocole OAuth (Open Authorization) pour y parvenir. OAuth est un protocole d'autorisation standard ouvert qui permet aux utilisateurs d'autoriser des applications tierces à agir en leur nom.

    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

    Comment faire l'intégration de Google Drive en utilisant PHP et OAuth Comment faire l'intégration de Google Drive en utilisant PHP et OAuth Jul 31, 2023 pm 04:41 PM

    Comment effectuer l'intégration de GoogleDrive à l'aide de PHP et OAuth GoogleDrive est un service de stockage cloud populaire qui permet aux utilisateurs de stocker des fichiers dans le cloud et de les partager avec d'autres utilisateurs. Grâce à GoogleDriveAPI, nous pouvons utiliser PHP pour écrire du code à intégrer à GoogleDrive afin de mettre en œuvre le téléchargement, le téléchargement, la suppression et d'autres opérations. Pour utiliser GoogleDriveAPI, nous devons nous authentifier via OAuth et

    Méthode d'authentification OAuth2 et implémentation en PHP Méthode d'authentification OAuth2 et implémentation en PHP Aug 07, 2023 pm 10:53 PM

    Méthode d'authentification OAuth2 et implémentation en PHP Avec le développement d'Internet, de plus en plus d'applications ont besoin d'interagir avec des plateformes tierces. Afin de protéger la confidentialité et la sécurité des utilisateurs, de nombreuses plateformes tierces utilisent le protocole OAuth2 pour mettre en œuvre l'authentification des utilisateurs. Dans cet article, nous présenterons la méthode d'authentification OAuth2 et son implémentation en PHP, et joindrons des exemples de code correspondants. OAuth2 est un framework d'autorisation qui permet aux utilisateurs d'autoriser des applications tierces à accéder à leurs ressources sur un autre fournisseur de services sans mentionner

    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

    Comment utiliser le framework Hyperf pour la connexion tierce Comment utiliser le framework Hyperf pour la connexion tierce Oct 25, 2023 am 09:16 AM

    Comment utiliser le framework Hyperf pour la connexion tierce Introduction : Avec le développement d'Internet, la connexion tierce est devenue une fonctionnalité standard de nombreux sites Web et applications. Grâce à la connexion tierce, les utilisateurs peuvent utiliser les informations de leur compte existant sur la plate-forme tierce pour se connecter à d'autres sites Web ou applications, évitant ainsi le processus d'inscription fastidieux et améliorant considérablement l'expérience utilisateur. Cet article explique comment utiliser le framework Hyperf pour implémenter une fonctionnalité de connexion tierce, avec des exemples de code spécifiques. 1. Travail de préparation Avant de commencer à mettre en œuvre la connexion tierce, je

    Comment utiliser PHP et OAuth pour l'intégration de la connexion QQ Comment utiliser PHP et OAuth pour l'intégration de la connexion QQ Jul 31, 2023 pm 12:37 PM

    Introduction à l'utilisation de PHP et OAuth pour l'intégration de la connexion QQ : Avec le développement des médias sociaux, de plus en plus de sites Web et d'applications commencent à fournir des fonctions de connexion tierces pour permettre aux utilisateurs de s'inscrire et de se connecter rapidement. En tant que l'une des plus grandes plateformes de médias sociaux de Chine, QQ est également devenue un service de connexion tiers fourni par de nombreux sites Web et applications. Cet article présentera les étapes à suivre pour utiliser PHP et OAuth pour l'intégration de la connexion QQ, avec des exemples de code. Étape 1 : Inscrivez-vous en tant que développeur de plateforme ouverte QQ Avant de commencer à intégrer la connexion QQ, je

    Utiliser PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2 Utiliser PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2 Aug 08, 2023 am 10:53 AM

    Utilisez PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2. OAuth2 est un protocole standard ouvert utilisé pour autoriser les applications tierces à accéder aux ressources utilisateur. Il est simple, sécurisé et flexible et est largement utilisé dans diverses applications Web et applications mobiles. En PHP, nous pouvons implémenter l'autorisation et l'authentification OAuth2 en utilisant des bibliothèques tierces. Cet article combinera des exemples de code pour présenter comment utiliser PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2. Tout d'abord, nous devons utiliser Compos

    See all articles