Rumah > rangka kerja php > ThinkPHP > teks badan

Bagaimanakah bahagian hadapan memanggil kod pengesahan tp6 bahagian belakang?

藏色散人
Lepaskan: 2021-12-13 14:41:14
ke hadapan
2142 orang telah melayarinya

Persekitaran

Halaman hadapan: uni-app

Halaman belakang: thinkphp6

Semasa membuat log masuk bahagian hadapan halaman, saya ingin log masuk Halaman memanggil fungsi kod pengesahan bahagian belakang thinkphp6, jadi bahagian hadapan cuba mendapatkan alamat imej captcha melalui antara muka api bahagian belakang. Kaedah yang dicuba adalah untuk menetapkan kaedah api belakang getCaptcha Selepas memanggil captcha_src() dalam kaedah, alamat imej boleh diperolehi, dan kemudian kembali ke panggilan bahagian hadapan, imej kod pengesahan boleh dipaparkan seperti biasa. Tetapi inilah masalah apabila log masuk, ia sentiasa menggesa bahawa kod pengesahan adalah salah. Kemudian, selepas perbandingan, saya mendapati bahawa ID sesi kod pengesahan yang diperolehi tidak konsisten dengan ID sesi semasa saya log masuk dan menyerahkan, jadi pengesahan gagal.

Mengapa apabila bahagian hadapan menghala ke alamat kod pengesahan thinkphp6 melalui alamat src tag img, sessionID yang dijana oleh latar belakang adalah berbeza daripada sessionID yang dijana semasa saya beroperasi pada halaman semasa This mekanisme masih tidak jelas.

Kemudian saya melihat bahawa terdapat kaedah create() dalam kelas captcha untuk terus menjana kod pengesahan Selepas ujian, memanggil kaedah ini melalui API boleh menghasilkan kod pengesahan dan sessionID adalah konsisten dengan sessionID apabila saya log masuk kemudian, tetapi saya menghadapi satu lagi masalah ialah kaedah create() ini mengembalikan kaedah respons, dan uni.request pada bahagian hadapan tidak boleh diperoleh, menyebabkan imej kod pengesahan tidak dapat dipaparkan. Selepas berfikir, saya memutuskan untuk mengubah suai kelas captcha dan menukar kaedah create() kepada kaedah baharu yang lain Kaedah ini mengembalikan pengekodan base64 bagi kod pengesahan yang dijana, dan kemudian mengembalikan hasil rentetan ke hujung hadapan boleh Paparan biasa dan log masuk pengesahan.

Kod khusus adalah seperti berikut:

1 Tambah kaedah createApi() bagi kelas captcha ini sebenarnya adalah salinan create(), tetapi nilai yang dikembalikan diubah suai seperti berikut :

$base64_data = 'data:image/png;base64,' . base64_encode($content);//合成图片的base64编码
return $base64_data;
Salin selepas log masuk
2. api方法调用返回
Salin selepas log masuk
public function getCaptcha(){
        $captcha = Captcha::createApi();
        return apiResultShow(config("status.success"),lang("success"),$captcha);

    }
Salin selepas log masuk

3 Bahagian hadapan menerima dan memaparkan kod pengesahan

<view @click="getCaptcha()">
	<captcha-img  :captchaSrc="captchaSrc" ></captcha-img>
</view>


.......
.........
...........
.............


getCaptcha(){
				var request_data = {};
				var sign = this.sign(request_data);
				uni.request({
				    url: '/url/api/member/getCaptcha',
				    data: { 
						sign:sign
					},
					method: 'POST',
					header:{
						"Content-Security-Policy": "upgrade-insecure-requests",
						"X-Requested-With": "XMLHttpRequest",
					},
					dataType:'json',
				    success: (res) => {
						if(res.data.status == 0){
							var img_src = res.data.result;
							this.captchaSrc = img_src;
						}else{
							this.captchaSrc ="";						
						} 
				    }
				});
			},
Salin selepas log masuk

Disyorkan: " 10 tutorial video thinkphp terkini

Atas ialah kandungan terperinci Bagaimanakah bahagian hadapan memanggil kod pengesahan tp6 bahagian belakang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
tp6
sumber:csdn.net
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan