Maison > cadre php > PensezPHP > Comment le front-end appelle-t-il le code de vérification backend tp6 ?

Comment le front-end appelle-t-il le code de vérification backend tp6 ?

藏色散人
Libérer: 2021-12-13 14:41:14
avant
2193 Les gens l'ont consulté

Environnement

Front-end : uni-app

Back-end : thinkphp6

Lors de la page de connexion frontale, je souhaite appeler la fonction de code de vérification thinkphp6 back-end sur la page de connexion, donc J'essaie d'obtenir le captcha du front-end via l'adresse de l'image de l'interface API back-end. La méthode essayée consiste à définir la méthode API back-end getCaptcha. Après avoir appelé captcha_src() dans la méthode, l'adresse de l'image peut être obtenue, puis renvoyée à l'appel frontal, l'image du code de vérification peut être affichée normalement. Mais voici le problème lors de la connexion, il est toujours demandé que le code de vérification soit incorrect. Plus tard, après comparaison, j'ai découvert que l'ID de session du code de vérification obtenu était incohérent avec l'ID de session lorsque je me suis connecté et soumis, la vérification a donc échoué.

Pourquoi lorsque le front-end pointe vers l'adresse du code de vérification de thinkphp6 via l'adresse src de la balise img, l'ID de session généré par l'arrière-plan est différent de l'ID de session généré lorsque j'opère sur la page actuelle. Ce mécanisme n'est toujours pas clair. .

Plus tard, j'ai vu qu'il existe une méthode create() dans la classe captcha pour générer directement un code de vérification. Après avoir testé, appeler cette méthode via l'API peut générer un code de vérification et l'ID de session est cohérent avec l'ID de session lorsque je le fais. connectez-vous plus tard, mais j'ai rencontré un autre problème. La méthode create() renvoie la méthode de réponse et la requête uni.request sur le front-end ne peut pas être obtenue, ce qui empêche l'affichage de l'image du code de vérification. Après réflexion, j'ai décidé de modifier la classe captcha et de remplacer la méthode create() par une autre nouvelle méthode. Cette méthode renvoie le codage base64 du code de vérification généré, puis renvoie le résultat de la chaîne au front-end. peut Affichage normal et connexion de vérification.

Le code spécifique est le suivant :

1. Ajoutez la méthode createApi() de la classe captcha Cette méthode est en fait une copie de create(), mais la valeur renvoyée est modifiée comme suit :

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

    }
Copier après la connexion

3. . Le front-end reçoit et affiche le code de vérification

<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 ="";						
						} 
				    }
				});
			},
Copier après la connexion

Recommandé : "Les 10 derniers didacticiels vidéo thinkphp"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
tp6
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal