cari
Rumahpembangunan bahagian belakangGolangPenyelesaian pengesahan API Microservice berdasarkan go-zero

Dengan populariti seni bina perkhidmatan mikro, semakin banyak aplikasi perlu melaksanakan fungsi pengesahan API. Pengesahan API boleh melindungi data dan sumber perusahaan serta menghalang pelanggan yang tidak dibenarkan daripada menyebabkan kerosakan pada sistem. Sebagai rangka kerja untuk pembangunan pesat perkhidmatan mikro, go-zero menyediakan penyelesaian pengesahan API bahagian belakang yang mudah digunakan dan fleksibel.

Apakah itu pengesahan API?

Pengesahan API biasanya merujuk kepada pengesahan identiti dan kebenaran klien untuk mengakses sumber melalui API. Proses ini biasanya termasuk langkah berikut:

  1. Pelanggan menyediakan pengenalan (seperti nama pengguna dan kata laluan).
  2. Pelayan pengesahan mengesahkan identiti.
  3. Jika pengesahan berjaya, pelayan pengesahan menjana token dan mengembalikannya kepada pelanggan.
  4. Pelanggan menghantar token ke pelayan API.
  5. Pelayan API menggunakan token untuk mengesahkan identiti dan kebenaran.
  6. Jika pengesahan berjaya, pelayan API mengembalikan sumber yang diminta.

Apabila melaksanakan pengesahan API, aspek berikut perlu dipertimbangkan:

  1. Keselamatan: Skim pengesahan mesti dapat menghantar maklumat identiti dan kelayakan melalui rangkaian dengan selamat.
  2. Skalabiliti: Skim pengesahan mesti dapat mengembangkan pengguna dan kebenaran dengan mudah apabila diperlukan.
  3. Mudah digunakan: Skim pengesahan hendaklah mudah digunakan dan difahami supaya pembangun dan pentadbir boleh mengurus dan menyelenggaranya.
  4. Prestasi: Skim pengesahan seharusnya dapat mengendalikan permintaan pengesahan dengan cepat dan cekap untuk mengelakkan overhed menjejaskan prestasi sistem.

Penyelesaian pengesahan API berdasarkan go-zero

go-zero ialah rangka kerja untuk pembangunan pesat perkhidmatan mikro dan menyediakan pelbagai kaedah untuk melaksanakan pengesahan API. Dalam artikel ini, kami akan memperkenalkan skim pengesahan API berdasarkan go-zero.

  1. Perkhidmatan Pengesahan

go-zero menyediakan perkhidmatan pengesahan pengguna yang mudah dan mudah digunakan. Anda hanya perlu menggunakan alat goctl untuk mencipta perkhidmatan yang dipanggil auth. Ia akan menjana model pengguna, peranan dan kebenaran asas secara automatik. Anda boleh menyimpannya menggunakan pangkalan data SQL atau NoSQL.

Berikut ialah contoh arahan untuk mencipta perkhidmatan pengesahan menggunakan goctl:

goctl api new auth -dir auth

Arahan ini akan mencipta perkhidmatan pengesahan dalam pengesahan direktori . Tanggungjawab utama perkhidmatan pengesahan adalah untuk mengesahkan identiti pelanggan dan mengembalikan token kepada pelanggan. Ia juga boleh menyediakan titik akhir perkhidmatan lain seperti pengurusan pengguna, pengurusan peranan dan pengurusan kebenaran.

  1. Gerbang API

go-zero juga menyediakan get laluan API pantas yang boleh digunakan untuk mengurus permintaan API dan menghalakan permintaan ke titik akhir perkhidmatan yang sesuai. API Gateway menggunakan API Gateway Application (AGA) yang ringan, yang menyepadukan perkhidmatan pengesahan dan menyediakan lapisan proksi untuk mengurus permintaan API dan permintaan laluan ke titik akhir perkhidmatan yang sesuai.

Berikut ialah contoh arahan untuk mencipta get API menggunakan goctl:

goctl api new gateway -dir gateway

Arahan ini akan mencipta gateway API dalam gateway direktori . Anda perlu menggunakan alat goctl untuk menambah modul perkhidmatan pengesahan dan logik pemprosesan penghalaan. Akhir sekali, anda boleh memulakan aplikasi API Gateway menggunakan arahan go run.

  1. Pelanggan

Langkah terakhir pengesahan API ialah klien. Pelanggan menggunakan token yang dikembalikan oleh perkhidmatan pengesahan untuk membuat panggilan API. Pelanggan perlu menambah token pada pengepala permintaan HTTP supaya pelayan API boleh mengesahkan permintaan pelanggan.

Berikut ialah klien HTTP yang ditulis dalam bahasa Go untuk menunjukkan cara menambah token dalam permintaan HTTP:

// Pakej utama melaksanakan klien HTTP mudah.
pakej utama

import (

"fmt"
"net/http"

)

func main() {

// Create a new HTTP request.
req, err := http.NewRequest(http.MethodGet, "https://example.com/api/resource", nil)
if err != nil {
    panic(err)
}

// Add the token to the request.
token := "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
req.Header.Add("Authorization", token)

// Send the request and print the response.
resp, err := http.DefaultClient.Do(req)
if err != nil {
    panic(err)
}

defer resp.Body.Close()

fmt.Println(resp.StatusCode)

}

Nota: Sila gantikan token dengan pengesahan Token yang dikembalikan oleh perkhidmatan.

Ringkasan

go-zero menyediakan penyelesaian pengesahan API bahagian belakang yang berkuasa, termasuk perkhidmatan pengesahan, get laluan API dan klien HTTP. Ia adalah penyelesaian yang mudah digunakan, fleksibel dan cekap yang boleh menskalakan kepada aplikasi perusahaan berskala besar. Jika anda sedang membangunkan aplikasi dengan seni bina perkhidmatan mikro, kami amat mengesyorkan agar anda mempertimbangkan untuk menggunakan go-zero sebagai penyelesaian pengesahan API.

Atas ialah kandungan terperinci Penyelesaian pengesahan API Microservice berdasarkan go-zero. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
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
Membina sistem berskala dengan bahasa pengaturcaraan GoMembina sistem berskala dengan bahasa pengaturcaraan GoApr 25, 2025 am 12:19 AM

Goisidealforbuildingscalablesystemsduetoitssimplicity, ecurciency, dan barangan-inconcurrencysupport.1) go'ScleansyntaxandminimalisticdesignenhanceProductivityandreduceerrors.2)

Amalan terbaik untuk menggunakan fungsi init dengan berkesan di GOAmalan terbaik untuk menggunakan fungsi init dengan berkesan di GOApr 25, 2025 am 12:18 AM

InitFunctionsingorunautomaticallybeforemain () andareuseforforsettingupenvironmentsandinitializingvariables.usethemforsimpletasks, mengelakkansidefefects, andbecautiouswithtestingandloggingtomaintaincodeclarityAndestability.

Perintah pelaksanaan fungsi init dalam pakej GoPerintah pelaksanaan fungsi init dalam pakej GoApr 25, 2025 am 12:14 AM

GoinitializespackagesintheordertheyareImported, thenexecutesinitfunctionswithinapackageintheirdefinitionorder, danfilenamesdeterminetheorderacrossmultiplefiles

Menentukan dan menggunakan antara muka tersuai di GOMenentukan dan menggunakan antara muka tersuai di GOApr 25, 2025 am 12:09 AM

CustomInterfacesingoarecrucialForWritingFlexible, diselenggara, danTestableCode.theYenabledEveloperStofocusonbehavioroverImplementation, enhancingmodularityandrobustness.bydefiningmethodsignaturesthattypesmustimplement, interfacesallowforcorcodforcodforcodforcodforcodforcodforcodforcodeShorcodeShorcodforcodforcodeShorcodeShorcodeShorcodeShorcodeShorcodeAdeShorcodeShorcodeSoUsVorcoShorcodeS

Menggunakan antara muka untuk mengejek dan menguji di GOMenggunakan antara muka untuk mengejek dan menguji di GOApr 25, 2025 am 12:07 AM

Alasan untuk menggunakan antara muka untuk simulasi dan ujian adalah bahawa antara muka membolehkan definisi kontrak tanpa menentukan pelaksanaan, menjadikan ujian lebih terpencil dan mudah dikekalkan. 1) Pelaksanaan antara muka yang tersirat menjadikannya mudah untuk membuat objek mengejek, yang dapat menggantikan pelaksanaan sebenar dalam ujian. 2) Menggunakan antara muka dengan mudah boleh menggantikan pelaksanaan sebenar perkhidmatan dalam ujian unit, mengurangkan kerumitan ujian dan masa. 3) Fleksibiliti yang disediakan oleh antara muka membolehkan perubahan dalam tingkah laku simulasi untuk kes ujian yang berbeza. 4) Antara muka membantu reka bentuk kod yang boleh diuji dari awal, meningkatkan modulariti dan mengekalkan kod.

Menggunakan init untuk permulaan pakej di GoMenggunakan init untuk permulaan pakej di GoApr 24, 2025 pm 06:25 PM

Di GO, fungsi INIT digunakan untuk permulaan pakej. 1) Fungsi init secara automatik dipanggil apabila permulaan pakej, dan sesuai untuk memulakan pembolehubah global, menetapkan sambungan dan memuatkan fail konfigurasi. 2) Terdapat pelbagai fungsi init yang boleh dilaksanakan dalam urutan fail. 3) Apabila menggunakannya, perintah pelaksanaan, kesukaran ujian dan kesan prestasi harus dipertimbangkan. 4) Adalah disyorkan untuk mengurangkan kesan sampingan, menggunakan suntikan ketergantungan dan penangguhan permulaan untuk mengoptimumkan penggunaan fungsi INIT.

Pernyataan Pilih Go: Pelbagai operasi serentakPernyataan Pilih Go: Pelbagai operasi serentakApr 24, 2025 pm 05:21 PM

Go'sSelectStatementStreamLinesConcurrentProgrammingByMultiPlexingOperations.1) itAllowSwaitingonMultiPlechannoPerations,

Teknik Konvensyen Lanjutan di GO: Konteks dan WaitgroupsTeknik Konvensyen Lanjutan di GO: Konteks dan WaitgroupsApr 24, 2025 pm 05:09 PM

ContextandWaitGroupSarecrucialingingoformanagingGoroutinesfectively.1) ContextAllowsSignalingCancellationandDeadlinesacrosapiboundaries, memastikangoroutinescanbestplygracely.2) WaitgroupSsynchronizegoroutine, Mempersembahkan CreationAllcebeBefefeSproprophering, Preveation

See all articles

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa