Rumah pembangunan bahagian belakang Golang Laksanakan log masuk pihak ketiga menggunakan Beego dan OAuth2

Laksanakan log masuk pihak ketiga menggunakan Beego dan OAuth2

Jun 22, 2023 pm 08:34 PM
oauth Log masuk pihak ketiga beego

Dengan perkembangan pesat Internet, log masuk pihak ketiga telah menjadi bahagian yang amat diperlukan dalam kehidupan dalam talian. Log masuk pihak ketiga memberikan pengguna kaedah log masuk yang lebih mudah, lebih pantas dan selamat, serta lebih popular daripada kaedah log masuk pendaftaran tradisional. Pada masa ini, log masuk pihak ketiga di pasaran terutamanya termasuk platform sosial yang besar seperti QQ, WeChat dan Weibo. Bagaimana untuk melaksanakan fungsi log masuk pihak ketiga dengan cepat? Artikel ini akan memperkenalkan cara menggunakan Beego dan OAuth2 untuk melaksanakan fungsi log masuk pihak ketiga.

1. Pengenalan kepada Beego

Beego ialah rangka kerja pengaturcaraan Go fast sumber terbuka. Ia sangat fleksibel dan boleh diperluaskan serta menyediakan sejumlah besar alatan dan perpustakaan. Beego boleh membantu pembangun membina aplikasi web dengan cepat dan menyediakan beberapa ciri penting, seperti pengurusan laluan automatik, sistem templat dan penyajian fail statik.

2. Pengenalan kepada protokol OAuth2

OAuth2 ialah protokol rangka kerja kebenaran yang membolehkan pengguna membenarkan aplikasi lain beroperasi bagi pihak mereka tanpa berkongsi kata laluan dan maklumat sensitif lain kepada pengguna mengakses pihak ketiga -perkhidmatan parti. Protokol ini mentakrifkan empat peranan: pemilik sumber, pelayan sumber, klien dan pelayan pengesahan. Antaranya, pemilik sumber merujuk kepada pengguna yang mempunyai hak capaian, pelayan sumber merujuk kepada pelayan yang menjadi tuan rumah sumber maklumat, klien merujuk kepada program perisian yang meminta akses kepada sumber yang dilindungi, dan pelayan pengesahan merujuk kepada pengesahan klien. identiti dan membenarkan akses kepada sumber yang dilindungi.

3. Gunakan Beego dan OAuth2 untuk melaksanakan log masuk pihak ketiga

  1. Buat projek Beego

Pertama, kita perlu mencipta projek Beego untuk tempatan pembangunan dan ujian. Gunakan arahan berikut (Beego perlu dipasang dahulu):

bee new thirdpartylogin
Salin selepas log masuk
  1. Pasang perpustakaan yang diperlukan

Kami perlu memasang beberapa perpustakaan yang diperlukan, termasuk github.com/astaxie/beego dan github.com/astaxie/beego/orm, Ia boleh dipasang menggunakan arahan berikut:

go get github.com/astaxie/beego
go get github.com/astaxie/beego/orm
Salin selepas log masuk
  1. Buat pangkalan data

Kami perlu mencipta pangkalan data untuk menyimpan maklumat pengguna dan maklumat log masuk pihak ketiga . Anda boleh menggunakan pangkalan data MySQL atau PostgreSQL. Dalam artikel ini, kami menggunakan pangkalan data MySQL. Berikut ialah pernyataan SQL untuk mencipta jadual pengguna dan jadual log masuk pihak ketiga:

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;
Salin selepas log masuk
  1. Mengkonfigurasi log masuk pihak ketiga

Kami perlu menggunakan log masuk pihak ketiga untuk pengesahan. Pada masa ini terdapat pelbagai kaedah log masuk pihak ketiga di pasaran, termasuk platform sosial yang besar seperti QQ, WeChat dan Weibo. Mari kita ambil log masuk QQ sebagai contoh untuk menerangkan.

Pertama, kita perlu mendaftarkan permohonan pada Platform Terbuka Internet QQ (https://connect.qq.com/) untuk mendapatkan App ID dan App Key. Kedua, kita perlu menambah kod berikut pada projek Beego untuk mendapatkan kebenaran pengguna:

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

    authURL := oauth.AuthCodeURL(state)
    c.Redirect(http.StatusTemporaryRedirect, authURL)
} 
Salin selepas log masuk

Dalam kod di atas, parameter state digunakan untuk mengenal pasti permintaan pengguna dan objek oauth mengandungi konfigurasi yang diperlukan untuk maklumat log masuk QQ. Kami menggunakan kaedah AuthCodeURL untuk menjana alamat kebenaran dan mengubah hala pengguna ke halaman kebenaran.

Seterusnya, kami perlu menambah kod berikut untuk menerima permintaan panggil balik QQ dan mendapatkan token akses:

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, "/")
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah Exchange untuk mendapatkan akses token dan gunakan fetchQQUserInfoKaedah untuk mendapatkan maklumat pengguna QQ, di mana openid digunakan untuk mengenal pasti pengguna QQ secara unik. Seterusnya, kami menyemak sama ada rekod pengguna QQ wujud dalam pangkalan data, dan jika ya, kemas kini token aksesnya, jika tidak, buat rekod akaun baharu.

  1. Pengesahan dan Kebenaran

Akhir sekali, kami perlu menambah fungsi pengesahan dan kebenaran untuk memastikan pengguna telah log masuk dan diberi kuasa melalui pihak ketiga.

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)
    })
}
Salin selepas log masuk

Dalam kod di atas, kami menyemak sama ada ID pengguna wujud dalam sesi, jika tidak maka ubah hala ke halaman log masuk, jika tidak, teruskan memproses permintaan.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan Beego dan OAuth2 untuk melaksanakan log masuk pihak ketiga. Kami menggunakan log masuk QQ sebagai contoh untuk memperkenalkan cara mendapatkan kebenaran pengguna, mendapatkan token akses, menyemak rekod pengguna dan fungsi lain. Menggunakan Beego dan OAuth2 untuk melaksanakan fungsi log masuk pihak ketiga boleh menyediakan pengguna dengan kaedah log masuk yang lebih mudah, lebih pantas dan selamat, dan juga boleh membawa pembangun pengalaman pembangunan yang lebih cekap dan lebih baik.

Atas ialah kandungan terperinci Laksanakan log masuk pihak ketiga menggunakan Beego dan OAuth2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP dan OAuth: Melaksanakan Integrasi Log Masuk Microsoft PHP dan OAuth: Melaksanakan Integrasi Log Masuk Microsoft Jul 28, 2023 pm 05:15 PM

PHP dan OAuth: Melaksanakan penyepaduan log masuk Microsoft Dengan pembangunan Internet, semakin banyak tapak web dan aplikasi perlu menyokong pengguna untuk log masuk menggunakan akaun pihak ketiga untuk menyediakan pengalaman pendaftaran dan log masuk yang mudah. Akaun Microsoft ialah salah satu akaun yang digunakan secara meluas di seluruh dunia, dan ramai pengguna ingin menggunakan akaun Microsoft untuk log masuk ke tapak web dan aplikasi. Untuk mencapai penyepaduan log masuk Microsoft, kami boleh menggunakan protokol OAuth (Open Authorization) untuk mencapainya. OAuth ialah protokol kebenaran standard terbuka yang membenarkan pengguna membenarkan aplikasi pihak ketiga bertindak bagi pihak mereka

Cara melakukan penyepaduan Google Drive menggunakan PHP dan OAuth Cara melakukan penyepaduan Google Drive menggunakan PHP dan OAuth Jul 31, 2023 pm 04:41 PM

Cara melakukan penyepaduan GoogleDrive menggunakan PHP dan OAuth GoogleDrive ialah perkhidmatan storan awan popular yang membolehkan pengguna menyimpan fail dalam awan dan berkongsinya dengan pengguna lain. Melalui GoogleDriveAPI, kami boleh menggunakan PHP untuk menulis kod untuk disepadukan dengan GoogleDrive untuk melaksanakan operasi muat naik, muat turun, pemadaman dan lain-lain fail. Untuk menggunakan GoogleDriveAPI kita perlu membuat pengesahan melalui OAuth dan

OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT Jul 28, 2023 pm 05:27 PM

OAuth dalam PHP: Mencipta Pelayan Kebenaran JWT Dengan peningkatan aplikasi mudah alih dan trend pemisahan bahagian hadapan dan belakang, OAuth telah menjadi bahagian yang amat diperlukan dalam aplikasi web moden. OAuth ialah protokol kebenaran yang melindungi sumber pengguna daripada capaian yang tidak dibenarkan dengan menyediakan proses dan mekanisme piawai. Dalam artikel ini, kita akan belajar cara membuat pelayan kebenaran OAuth berasaskan JWT (JSONWebTokens) menggunakan PHP. JWT ialah sejenis

Lima projek sumber terbuka bahasa Go yang dipilih untuk membawa anda meneroka dunia teknologi Lima projek sumber terbuka bahasa Go yang dipilih untuk membawa anda meneroka dunia teknologi Jan 30, 2024 am 09:08 AM

Dalam era perkembangan teknologi yang pesat hari ini, bahasa pengaturcaraan bermunculan seperti cendawan selepas hujan. Salah satu bahasa yang telah menarik perhatian ramai ialah bahasa Go, yang digemari oleh ramai pembangun kerana kesederhanaan, kecekapan, keselamatan serentak dan ciri-ciri lain. Bahasa Go terkenal dengan ekosistemnya yang kukuh dengan banyak projek sumber terbuka yang sangat baik. Artikel ini akan memperkenalkan lima projek sumber terbuka bahasa Go yang dipilih dan membawa pembaca untuk meneroka dunia projek sumber terbuka bahasa Go. KubernetesKubernetes ialah enjin orkestrasi kontena sumber terbuka untuk automatik

Kaedah dan pelaksanaan pengesahan OAuth2 dalam PHP Kaedah dan pelaksanaan pengesahan OAuth2 dalam PHP Aug 07, 2023 pm 10:53 PM

Kaedah dan pelaksanaan pengesahan OAuth2 dalam PHP Dengan pembangunan Internet, semakin banyak aplikasi perlu berinteraksi dengan platform pihak ketiga. Untuk melindungi privasi dan keselamatan pengguna, banyak platform pihak ketiga menggunakan protokol OAuth2 untuk melaksanakan pengesahan pengguna. Dalam artikel ini, kami akan memperkenalkan kaedah dan pelaksanaan pengesahan OAuth2 dalam PHP, dan melampirkan contoh kod yang sepadan. OAuth2 ialah rangka kerja kebenaran yang membolehkan pengguna membenarkan aplikasi pihak ketiga mengakses sumber mereka pada pembekal perkhidmatan lain tanpa menyebut

Keperluan pembangunan bahasa Go: 5 cadangan rangka kerja yang popular Keperluan pembangunan bahasa Go: 5 cadangan rangka kerja yang popular Mar 24, 2024 pm 01:15 PM

"Go Language Development Essentials: 5 Syor Rangka Kerja Popular" Sebagai bahasa pengaturcaraan yang pantas dan cekap, bahasa Go digemari oleh semakin ramai pembangun. Untuk meningkatkan kecekapan pembangunan dan mengoptimumkan struktur kod, ramai pembangun memilih untuk menggunakan rangka kerja untuk membina aplikasi dengan cepat. Dalam dunia bahasa Go, terdapat banyak rangka kerja yang sangat baik untuk dipilih. Artikel ini akan memperkenalkan 5 rangka kerja bahasa Go yang popular dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan rangka kerja ini dengan lebih baik. 1.GinGin ialah rangka kerja web yang ringan dengan pantas

Cara menggunakan rangka kerja Hyperf untuk log masuk pihak ketiga Cara menggunakan rangka kerja Hyperf untuk log masuk pihak ketiga Oct 25, 2023 am 09:16 AM

Cara menggunakan rangka kerja Hyperf untuk log masuk pihak ketiga Pengenalan: Dengan pembangunan Internet, log masuk pihak ketiga telah menjadi ciri standard bagi banyak tapak web dan aplikasi. Melalui log masuk pihak ketiga, pengguna boleh menggunakan maklumat akaun sedia ada mereka pada platform pihak ketiga untuk log masuk ke tapak web atau aplikasi lain, mengelakkan proses pendaftaran yang menyusahkan dan meningkatkan pengalaman pengguna dengan ketara. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk melaksanakan fungsi log masuk pihak ketiga, dengan contoh kod khusus. 1. Kerja penyediaan Sebelum mula melaksanakan log masuk pihak ketiga, I

Cara menggunakan PHP dan OAuth untuk penyepaduan log masuk QQ Cara menggunakan PHP dan OAuth untuk penyepaduan log masuk QQ Jul 31, 2023 pm 12:37 PM

Pengenalan kepada cara menggunakan PHP dan OAuth untuk penyepaduan log masuk QQ: Dengan pembangunan media sosial, semakin banyak laman web dan aplikasi mula menyediakan fungsi log masuk pihak ketiga untuk memudahkan pengguna mendaftar dan log masuk dengan cepat. Sebagai salah satu platform media sosial terbesar di China, QQ juga telah menjadi perkhidmatan log masuk pihak ketiga yang disediakan oleh banyak tapak web dan aplikasi. Artikel ini akan memperkenalkan langkah tentang cara menggunakan PHP dan OAuth untuk penyepaduan log masuk QQ, dengan contoh kod. Langkah 1: Daftar sebagai pembangun platform terbuka QQ Sebelum mula mengintegrasikan log masuk QQ, I

See all articles