Dengan perkembangan dan populariti Internet, semakin banyak tapak web dan aplikasi telah dibangunkan, kebanyakannya memerlukan kod pengesahan untuk memastikan kesahihan dan keselamatan pengguna. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Beego dan pustaka Captcha untuk melaksanakan fungsi kod pengesahan. Antaranya, Beego ialah rangka kerja aplikasi web berdasarkan bahasa Go, dan Captcha ialah perpustakaan kod pengesahan sumber terbuka dalam bahasa Go.
Sebelum melaksanakan kod pengesahan, anda perlu memasang rangka kerja Beego dan mencipta aplikasi Go baharu. Rangka kerja Beego boleh dipasang menggunakan arahan berikut:
go get github.com/astaxie/beego
Kemudian, buat aplikasi baharu dan mulakan perkhidmatan:
beego new myapp cd myapp bee run
Jika semuanya berjalan lancar, aplikasi harus boleh diakses dalam penyemak imbas, output "Selamat datang ke Beego!".
Seterusnya, anda perlu memasang pustaka Captcha. Anda boleh menggunakan arahan berikut untuk memasang:
go get github.com/mojocn/base64Captcha
Selepas pemasangan selesai, anda boleh mengimport pustaka Captcha dalam aplikasi Go anda dan menggunakan kod berikut untuk menjana dan mengesahkan kod pengesahan:
// 生成验证码 config := captcha.ConfigCharacter{ Height: 60, Width: 240, Mode: captcha.CaptchaModeNumber, Complexity: captcha.CaptchaComplexityNormal, CaptchaLen: 4, CaptchaTimeout: 1200, SubPixel: false, ShowLineOptions: captcha.OptionShowHollowLine | captcha.OptionShowSineLine, Source: "1234567890", BgColor: "#eeeeee", } captchaId, captchaImage := captcha.GenerateCaptcha("", config) // 验证验证码 result := captcha.VerifyCaptcha(captchaId, userInputCaptcha)
Dalam kod di atas, pertama Konfigurasi fail konfigurasi ditakrifkan, yang menentukan pelbagai atribut kod pengesahan, seperti lebar, ketinggian, set aksara, masa kelangsungan hidup, dsb. Kemudian, kod pengesahan dijana dengan memanggil kaedah GenerateCaptcha, dan imej kod pengesahan yang dijana dan ID kod pengesahan dikembalikan kepada pengguna untuk paparan dan penyimpanan. Akhir sekali, kaedah VerifyCaptcha dipanggil untuk mengesahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah konsisten dengan ID kod pengesahan yang dijana sebelum ini.
Perhatikan bahawa apabila memanggil GenerateCaptcha, parameter pertama ialah rentetan kosong, yang bermaksud bahawa kod pengesahan yang dijana kali ini tidak perlu dikaitkan dengan sebarang data. Jika anda perlu mengaitkannya dengan data lain, anda boleh menghantar data dalam parameter pertama, seperti nombor telefon mudah alih atau nama pengguna, dsb. Apabila memanggil VerifyCaptcha, parameter pertama melepasi ID kod pengesahan yang dijana sebelum ini dan parameter kedua melepasi kod pengesahan yang dimasukkan oleh pengguna.
Dengan penyediaan Beego dan Captcha, anda boleh melaksanakan fungsi kod pengesahan dalam aplikasi Beego. Mula-mula, jana kod pengesahan dan paparkan imej kod pengesahan dalam pengawal Beego Kod tersebut adalah seperti berikut:
// 生成验证码 func (c *MainController) GenerateCaptcha() { config := captcha.ConfigCharacter{ Height: 60, Width: 240, Mode: captcha.CaptchaModeNumber, Complexity: captcha.CaptchaComplexityNormal, CaptchaLen: 4, CaptchaTimeout: 1200, SubPixel: false, Source: "1234567890", BgColor: "#eeeeee", } captchaId, captchaImage := captcha.GenerateCaptcha("", config) // 将验证码及其ID存储到session中,并返回图片 c.SetSession(sessionCaptchaId, captchaId) c.Ctx.ResponseWriter.Header().Set("Cache-Control", "no-store, no-cache") c.Ctx.ResponseWriter.Header().Set("Content-Type", "image/png") captchaImage.WriteTo(c.Ctx.ResponseWriter) } // 验证验证码 func (c *MainController) CheckCaptcha() { publicKey := c.GetString("public_key") inputCaptcha := c.GetString("input_captcha") // 从session中获取验证码ID captchaId := c.GetSession(sessionCaptchaId) if captchaId == nil { c.ResponseError(errNoCaptchaFound) return } // 验证输入的验证码 if !captcha.VerifyCaptcha(captchaId.(string), inputCaptcha) { c.ResponseError(errCaptchaNotMatch) return } // 验证码匹配成功,移除验证码ID c.DelSession(sessionCaptchaId) // TODO: 验证通过,执行其他操作 }
Dalam kod di atas, kod pengesahan pertama kali dijana dalam kaedah GenerateCaptcha dan kod pengesahan serta kodnya. ID disimpan di tengah-tengah. Kemudian, kembalikan imej kod pengesahan yang dijana kepada pelanggan. Dalam kaedah CheckCaptcha, dapatkan ID kod pengesahan daripada sesi dan gunakan kaedah VerifyCaptcha untuk mengesahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah betul. Jika pengesahan berjaya, ID kod pengesahan akan dialih keluar dan tindakan lain akan dilakukan.
Akhir sekali, tambahkan peraturan penghalaan berikut pada penghalaan Beego:
beego.Router("/captcha/generate", &controllers.MainController{}, "get:GenerateCaptcha") beego.Router("/captcha/check", &controllers.MainController{}, "post:CheckCaptcha")
Dengan cara ini, pelaksanaan fungsi kod pengesahan selesai. Apabila mengakses /captcha/generate, kod pengesahan baharu akan dijana, IDnya akan disimpan dalam sesi dan imej kod pengesahan akan dikembalikan kepada pelanggan. Apabila mengakses /captcha/check, kod pengesahan yang dimasukkan oleh pengguna akan diperoleh daripada permintaan HTTP POST dan disahkan sama ada ia konsisten dengan ID kod pengesahan yang dijana sebelum ini. Jika ia sepadan, ID kod pengesahan akan dialih keluar dan operasi lain akan dilakukan.
Ringkasan
Artikel ini memperkenalkan cara menggunakan Beego dan Captcha untuk melaksanakan fungsi kod pengesahan. Rangka kerja Beego menyediakan sokongan pembangunan web yang baik, dan perpustakaan Captcha menyediakan penjanaan kod pengesahan dan sokongan pengesahan yang baik. Dengan menggabungkan kedua-duanya, fungsi kod pengesahan boleh dilaksanakan dengan mudah untuk meningkatkan keselamatan dan keteguhan aplikasi web.
Atas ialah kandungan terperinci Gunakan Beego dan Captcha untuk melaksanakan fungsi kod pengesahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!