


Masalah dengan pengesahan tersuai merentas domain dalam go
Dalam pembangunan bahasa Go, permintaan merentas domain adalah masalah biasa. Permintaan merentas domain merujuk kepada menghantar permintaan kepada pelayan di bawah nama domain yang berbeza melalui kod JavaScript dalam penyemak imbas. Disebabkan sekatan dasar asal penyemak imbas, permintaan merentas domain tidak dibenarkan secara lalai. Walau bagaimanapun, dalam sesetengah senario, kami mungkin perlu melakukan pengesahan tersuai dalam permintaan merentas domain untuk memastikan keselamatan dan ketepatan permintaan tersebut. Dalam artikel ini, editor PHP Xigua akan memperkenalkan kepada anda cara menyelesaikan masalah pengesahan tersuai merentas domain dalam bahasa Go, membantu anda menghadapi cabaran permintaan merentas domain dengan lebih baik.
Kandungan soalan
Saya cuba belajar pengesahan adat golang, tetapi saya menghadapi banyak masalah. Inilah kod yang saya cuba:
package main import ( "reflect" "github.com/go-playground/validator/v10" "fmt" ) type TeamMember struct { Country string Age int DropShip bool `validate:"is_eligible"` } func CustomValidation(fl validator.FieldLevel) bool { /* if(DropShip == true) { httpresponse = curl https://3rd-party-api.com/?country=<Country>&age=<Age> return httpresponse.code == 200 } return false */ b := fl.Parent() fmt.Println(reflect.TypeOf(b)) fmt.Println(reflect.ValueOf(b)) c := reflect.ValueOf(b).Interface() fmt.Println(c.(TeamMember)) fmt.Println("============") return true } func main() { var validate *validator.Validate validate = validator.New(validator.WithRequiredStructEnabled()) _ = validate.RegisterValidation("is_eligible", CustomValidation) teammember := TeamMember{"Canada", 34, true} validate.Struct(teammember) }
Anda boleh melihat logik pengesahan yang saya cuba dalam komen kod...jika DropShip
字段为 true,那么我需要将 Country
和 Age
menyerahkan kepada API lain untuk melihat sama ada ahli pasukan itu layak. < /p>
Masalahnya ialah saya cuba menggunakan senaman reflect
库来访问 TeamMember
结构中的 Country
和 Age
字段。 fmt.Println(c.(TeamMember))
dan program saya ranap.
Bolehkah seseorang memberi saya contoh cara mengakses medan Ahli Pasukan yang lain? Atau adakah kaedah pengesahan saya melanggar simpulan bahasa pengesahan dalam golang?
Penyelesaian
Dalam kes ini, lebih baik menggunakan pengesahan tahap struktur tersuai:
package main import ( "fmt" "github.com/go-playground/validator/v10" ) type TeamMember struct { Country string Age int DropShip bool } func TeamMemberStructLevelValidation(sl validator.StructLevel) { teamMember := sl.Current().Interface().(TeamMember) if teamMember.DropShip { // submit the Country and Age to another API to see if this team member is eligible. if teamMember.Country == "Canada" && teamMember.Age == 34 { sl.ReportError(teamMember.Country, "country", "Country", "is_eligible", "") sl.ReportError(teamMember.Age, "age", "Age", "is_eligible", "") } } } func main() { validate := validator.New(validator.WithRequiredStructEnabled()) validate.RegisterStructValidation(TeamMemberStructLevelValidation, TeamMember{}) teamMember := TeamMember{"Canada", 34, true} err := validate.Struct(teamMember) fmt.Printf("%+v\n", err) // Output: // Key: 'TeamMember.country' Error:Field validation for 'country' failed on the 'is_eligible' tag // Key: 'TeamMember.age' Error:Field validation for 'age' failed on the 'is_eligible' tag }
Lihat juga contoh yang disediakan oleh pakej: https://www.php.cn/link/fe41bb826b6a3cd35fe36744936400b9.
Atas ialah kandungan terperinci Masalah dengan pengesahan tersuai merentas domain dalam go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Dua cara untuk menentukan struktur dalam bahasa Go: perbezaan antara VAR dan jenis kata kunci. Apabila menentukan struktur, pergi bahasa sering melihat dua cara menulis yang berbeza: pertama ...

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

GO Pointer Syntax dan menangani masalah dalam penggunaan perpustakaan Viper semasa pengaturcaraan dalam bahasa Go, adalah penting untuk memahami sintaks dan penggunaan petunjuk, terutama dalam ...
