>  기사  >  PHP 프레임워크  >  프런트 엔드는 백엔드 tp6 확인 코드를 어떻게 호출합니까?

프런트 엔드는 백엔드 tp6 확인 코드를 어떻게 호출합니까?

藏色散人
藏色散人앞으로
2021-12-13 14:41:142151검색

Environment

Front-end: uni-app

Back-end: thinkphp6

프론트엔드 로그인 페이지를 할 때 로그인 페이지에서 백엔드 thinkphp6 인증코드 기능을 호출하고 싶어서 백엔드 API 인터페이스 이미지 주소를 통해 프런트엔드에서 보안문자를 가져오려고 합니다. 시도한 방법은 백엔드 API 메소드인 getCaptcha를 설정하는 것인데, 해당 메소드에서 captcha_src()를 호출한 후 이미지 주소를 획득한 후 프론트엔드 호출로 반환하면 정상적으로 인증코드 이미지가 표시될 수 있습니다. 그런데 문제는 로그인 시 항상 인증번호가 틀렸다는 메시지가 뜹니다. 이후 비교 결과, 획득한 인증코드의 세션ID가 로그인 및 제출 당시의 세션ID와 일치하지 않아 인증에 실패했다는 사실을 발견했습니다.

왜 프론트 엔드가 img 태그의 src 주소를 통해 thinkphp6의 인증 코드 주소를 가리키는 경우 백그라운드에서 생성된 세션 ID가 현재 페이지에서 작업할 때 생성된 세션 ID와 다른지 이 메커니즘은 아직 명확하지 않습니다. .

나중에 captcha 클래스에 직접 인증 코드를 생성하는 create() 메소드가 있다는 것을 확인했습니다. 테스트 후 API를 통해 이 메소드를 호출하면 인증 코드가 생성되고 세션 ID가 세션 ID와 일치합니다. 나중에 로그인했는데 또 다른 문제가 발생했습니다.이 create() 메서드가 응답 메서드를 반환하는데 프런트 엔드의 uni.request를 가져올 수 없어 인증 코드 이미지가 표시되지 않습니다. 고민 끝에 captcha 클래스를 수정하고 create() 메소드를 다른 새로운 메소드로 변경하기로 결정했습니다. 이 메소드는 생성된 인증 코드의 base64 인코딩을 반환한 후 마지막으로 프론트엔드에 문자열 결과를 반환합니다. 일반 디스플레이 및 인증 로그인이 가능합니다.

구체적인 코드는 다음과 같습니다.

1. captcha 클래스의 createApi() 메소드를 추가합니다. 이 메소드는 실제로 create()의 복사본이지만 반환된 값은 다음과 같이 수정됩니다. . 프론트 엔드는 인증 코드를 수신하고 표시합니다

$base64_data = 'data:image/png;base64,' . base64_encode($content);//合成图片的base64编码
return $base64_data;

추천: "
최신 10개의 thinkphp 비디오 튜토리얼

"

위 내용은 프런트 엔드는 백엔드 tp6 확인 코드를 어떻게 호출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제