> 백엔드 개발 > PHP 튜토리얼 > 백엔드 인증 코드 값을 프런트엔드와 일치시키는 방법은 무엇입니까?

백엔드 인증 코드 값을 프런트엔드와 일치시키는 방법은 무엇입니까?

WBOY
풀어 주다: 2016-08-04 09:20:28
원래의
1509명이 탐색했습니다.

프런트엔드 사용자는 등록 시 인증코드 이미지 값을 입력한 후 백엔드와 매칭합니다.

하지만 사용자가 등록되지 않았기 때문에 ID를 바인딩할 수 없으므로 임시 디자인은 다음과 같습니다.

인증 코드 이미지를 생성할 때 인증 코드 값을 캐시(redis)에 저장합니다. 캐시는 만료 시간을 설정합니다. 그런 다음 프런트 엔드가 인증 코드를 제출하면 캐시에서 값을 읽어옵니다. 캐시가 있는지 확인하고 있으면 일치가 성공한 것이며 이 캐시를 삭제합니다.

문제는 실수를 하더라도 성공적인 매칭이 될 수 있지만 확률은 특별히 높지 않다는 점입니다.

더 좋은 아이디어가 있나요?

답글 내용:

프런트엔드 사용자는 등록 시 인증코드 이미지 값을 입력한 후 백엔드와 매칭합니다.

하지만 사용자가 등록되지 않았기 때문에 ID를 바인딩할 수 없으므로 임시 디자인은 다음과 같습니다.

인증 코드 이미지를 생성할 때 인증 코드 값을 캐시(redis)에 저장합니다. 캐시는 만료 시간을 설정합니다. 그런 다음 프런트 엔드가 인증 코드를 제출하면 캐시에서 값을 읽어옵니다. 캐시가 있는지 확인하고 일치하는 경우 이 캐시를 삭제합니다.

문제는 실수를 하더라도 성공적인 매칭이 될 수 있지만 확률은 특별히 높지 않다는 점입니다.

더 좋은 아이디어가 있나요?

프런트엔드와 백엔드가 분리되지 않은 경우 세션에 인증코드를 저장하여 인증할 수 있습니다.
프런트엔드와 백엔드가 분리된 경우 프런트엔드의 각 요청은 상태 비저장입니다. 그러면 프런트엔드가 처음 요청할 때 프런트엔드에 토큰을 할당해야 합니다. . 그런 다음 프런트엔드에서 요청할 때마다 이 토큰을 가져옵니다. 이 토큰을 redis의 키 값으로 사용하고, 해당 값 위치에 인증 코드를 입력하면 됩니다.

하나의 세션과 하나의 인증코드, 등록하지 않아도 세션이 있습니다

잘 조절만 한다면, 잘못 입력하더라도 매칭에 성공할 가능성은 없어야 합니다.
1. 백그라운드에서 인증 코드를 생성합니다. 그리고 세션에 넣으세요.
2. 프런트 데스크에서 받은 인증 코드도 방금 세션에 등록된 인증 코드와 동기화됩니다.
3. 프론트에서 잘못된 인증번호를 입력하거나, 사용자가 인증번호를 클릭하여 전환하는 경우. 그런 다음 백그라운드에서 인증 코드를 변경하고 세션에서도 인증 코드를 변경하세요.

사실 프론트 데스크에 표시된 인증 코드가 항상 세션과 동기화되어 있는 한 문제가 없습니다.

PS: 각 요청이 멀티스레드인 경우 입력 오류가 발생하더라도 일치에 성공할 가능성이 없어야 합니다.

사용자가 등록 시 인증 코드를 생성하면 세션에 인증 코드가 기록됩니다. 사용자가 이를 제출한 후 세션에서 인증 코드를 읽어 비교합니다.
이 문서를 참조하세요. /netsecurity.51cto.com/art/201402/428721.htm

프런트엔드:<img src="checkcode.php" id="code" onclick="JavaScript:this.src='checkcode.php?tm=' Math.random()" />
백엔드:

<code>$showing=strtoupper($_POST['checkcode']); //检测提交过来的验证码
if($_SESSION['checkcode']!=$showing||empty($showing)){
  unset($_SESSION['checkcode']);
  die('验证码错误');
}
</code>
로그인 후 복사

인증코드 생성:
백엔드 인증 코드 값을 프런트엔드와 일치시키는 방법은 무엇입니까?

세션: 컴퓨터, 특히 네트워크 애플리케이션에서는 이를 "세션 제어"라고 합니다. 등록된 사용자인지 여부에 관계없이 액세스하는 한 서버는 고유한 세션 ID를 생성합니다. 세션에 인증 코드 데이터를 저장하면 됩니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿