Rumah > Artikel > pembangunan bahagian belakang > Cara menggunakan Golang untuk melaksanakan fungsi log masuk pengguna
Golang ialah bahasa pengaturcaraan yang cekap dan boleh dipercayai sesuai untuk pembangunan aplikasi peringkat perusahaan berskala besar. Dalam medan Internet hari ini, fungsi log masuk pengguna adalah pautan yang sangat diperlukan. Bagaimana untuk menggunakan Golang untuk melaksanakan fungsi log masuk pengguna? Artikel ini akan memperkenalkan pengetahuan berkaitan Golang untuk melaksanakan log masuk dari aspek berikut.
1. Gunakan Golang untuk mereka bentuk halaman log masuk pengguna
Di Golang, kami boleh menggunakan rangka kerja web untuk membina halaman log masuk pengguna. Rangka kerja web yang popular pada masa ini termasuk: Beego, Echo, dsb. Artikel ini menggunakan rangka kerja Beego sebagai contoh untuk menunjukkan cara membuat halaman log masuk pengguna.
Pertama, anda perlu memasang rangka kerja Beego dan alat baris arahan Beego yang sepadan. Masukkan arahan berikut dalam persekitaran baris arahan untuk melengkapkan pemasangan:
go get github.com/astaxie/beego go get github.com/beego/bee
Selepas memasang Beego, kami boleh menggunakan alatan baris arahan Beego untuk mencipta projek baharu. Masukkan arahan berikut pada baris arahan:
bee new projectname
di mana "projectname" ialah nama projek yang anda ingin buat. Selepas mencipta projek, kita perlu mencipta templat log masuk baharu dalam projek Templat termasuk kotak input untuk nama pengguna dan kata laluan, dan butang log masuk. Selepas membina halaman, kita perlu memproses logik log masuk dalam kod, seperti menyemak sama ada akaun dan kata laluan pengguna adalah betul, lompat ke halaman yang diperlukan, jika tidak, pengguna akan gagal untuk log masuk .
2. Gunakan Golang untuk menyambung ke pangkalan data
Apabila pengguna log masuk, kita perlu membandingkan kata laluan akaun yang dimasukkan oleh pengguna dengan data dalam pangkalan data untuk mengesahkan ketepatan maklumat log masuk pengguna. Di sini, kami menggunakan pakej sql terbina dalam Golang untuk melaksanakan operasi sambungan pangkalan data dan merealisasikan keperluan log masuk Golang.
Dalam kod, kita boleh menggunakan kaedah berikut untuk menyambung ke pangkalan data:
import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname") if err != nil { log.Fatal(err) } defer db.Close() }
di mana db ialah objek sambungan pangkalan data, pengguna ialah nama pengguna pangkalan data, kata laluan ialah kata laluan pangkalan data , localhost: 3306 menunjukkan alamat pelayan dan port di mana pangkalan data berada, dan dbname ialah nama pangkalan data. Dengan cara ini, kita boleh menyambung ke pangkalan data.
3. Gunakan Golang untuk melaksanakan log masuk Kuki
Kuki ialah fail maklumat yang diselenggara oleh pengguna yang dihantar antara penyemak imbas dan pelayan. Apabila pengguna berjaya log masuk, pelayan akan menyimpan maklumat log masuk pengguna dalam Kuki dan mengembalikannya ke penyemak imbas untuk pengesahan log masuk pada lawatan seterusnya. Di Golang, kami boleh menggunakan pakej http.Cookie untuk mengendalikan operasi berkaitan Cookies.
Dalam kod, kita boleh menggunakan kaedah berikut untuk melaksanakan operasi Kuki:
import ( "net/http" ) func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } func handler(w http.ResponseWriter, r *http.Request) { c := http.Cookie{ Name: "cookie_name", Value: "cookie_value", } http.SetCookie(w, &c) c, err := r.Cookie("cookie_name") if err != nil { if err == http.ErrNoCookie { fmt.Fprintf(w, "No cookie found") } else { log.Fatal(err) } } else { fmt.Fprintf(w, "Cookie value is %s", c.Value) } }
Dalam kod di atas, kita mula-mula memulakan objek Kuki melalui http.Cookie dan menyimpannya di sebelah Pelayar. Pada kali seterusnya penyemak imbas mengakses halaman ini, pelayan akan membaca maklumat Kuki dan melakukan operasi yang berkaitan.
4. Golang melaksanakan log masuk OAuth2.0
OAuth2.0 ialah rangka kerja kebenaran yang menyediakan kaedah kebenaran yang selamat, terbuka dan mudah, serta menyediakan mekanisme perkhidmatan kebenaran platform pihak ketiga bersepadu . Di Golang, kita boleh menggunakan perpustakaan go-oauth2/oauth untuk melaksanakan log masuk OAuth2.0.
Dalam kod, kami boleh menggunakan kaedah berikut untuk melaksanakan log masuk OAuth2.0:
import ( "github.com/markbates/goth/gothic" "github.com/markbates/goth/providers/google" ) func main() { var g GoogleProviderCredentials g = GoogleProviderCredentials{ clientID: "client_id", clientSecret: "client_secret", redirectURI: "redirect_uri", } goth.UseProviders( google.New(g.clientID, g.clientSecret, g.redirectURI, "email", "profile"), ) route.GET("/auth/google/login", Controller.AuthGoogleLogin) route.GET("/auth/google/callback", Controller.AuthGoogleCallback) if err := http.ListenAndServe(":8080", nil); err != nil { fmt.Println(err) } } func AuthGoogleLogin(c *gin.Context) { gotham.LoginHandler(c.Writer, c.Request) } func AuthGoogleCallback(c *gin.Context) { user, err := gothic.CompleteUserAuth(c.Writer, c.Request) if err != nil { log.Stderr("{Error: %s}", err) } fmt.Println(user.AccessToken) c.Redirect(http.StatusMovedPermanently, "/") }
Dalam kod di atas, kami mula-mula menggunakan kaedah gotham.UseProviders untuk melaksanakan pihak ketiga perkhidmatan seperti sambungan platform Perkhidmatan Google. Apabila pengguna memilih platform log masuk melalui antara muka log masuk dan berjaya disahkan, dia akan diubah hala terus ke alamat panggilan balik yang kami konfigurasikan di bahagian belakang Google untuk melengkapkan keseluruhan proses kebenaran OAuth2.0.
Kesimpulan
Melalui pengenalan di atas, saya percaya semua orang sudah mempunyai pemahaman tentang log masuk Golang dan teknologi yang berkaitan. Sama ada menggunakan rangka kerja web, memautkan pangkalan data, mengendalikan kuki atau melaksanakan fungsi log masuk OAuth2.0, Golang sangat berkuasa dan boleh memenuhi keperluan kami dalam pembangunan sebenar.
Atas ialah kandungan terperinci Cara menggunakan Golang untuk melaksanakan fungsi log masuk pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!