2017-12-07 1 views
0

여기내 ASP.NET 응용 프로그램에서 전자 메일 하이퍼 링크의 동일한 요청을 두 번째로 처리하지 못하게하는 방법은 무엇입니까?

  1. 내 백엔드 소프트웨어는 데이터가 포함 된 하이퍼 링크가 포함 된 전자 메일 사용자를 보냅니다 ... 문제입니다 (예. "? dataName = dataYadaYada").

  2. 사용자는 이메일을 받아 내 ASP.NET 응용 프로그램이 요청을 얻을 수 queryString이 데이터를 처리하고 "감사합니다"로 다시 응답 페이지를 전송 플러스 다른 페이지로 연결되는 링크가

  3. 하이퍼 링크를 클릭합니다.

  4. 문제 : 사용자가 페이지를 다시 게시하거나 페이지 링크 중 하나를 클릭하면 ASP.NET에서 동일한 queryString을 사용하여 동일한 요청을 다시 받아서 실수로 처리합니다.

내 ASP.NET 응용 프로그램은 이미 처리 된 요청을 인식하고 건너 뛸 수 있습니까?

내가 생각할 수있는 유일한 해결책은 전자 메일 하이퍼 링크에 고유 한 순차 번호를 입력하는 백엔드입니다. 그런 다음 ASP.NET에서이를 동일한 queryString의 두 번째 요청을 탐지하기 위해 세션 변수에 저장합니다.

더 좋은 방법이 있습니까?

+0

후속 메일 링크에 dataName을 설정하지 마십시오. 그러면 서버에서이 이메일이 첫 번째 이메일이 아니란 것을 알게 될 것입니다. 재 게시의 경우 서버의 세션에 무엇인가를 설정하여 사용자에게 이미 이메일이 전송되었음을 알 수 있습니다. – Spikolynn

+0

나는 이것에 대해 생각할 것입니다. –

답변

1

매우 간단합니다 - 요청을 받으면 데이터베이스에 dataname이 사용되었다는 것을 기록하고 요청을받을 때마다 확인하십시오.

dataname 자체가 고유하지 않은 경우 뭔가있는 다른 매개 변수를 추가합니다 (의미가있는 경우 dataname과 함께 사용).이 매개 변수는 원래 발생한 특정 전자 메일을 식별 할 수 있도록합니다.

P. 세션을 사용하는 것은 일시적이며 브라우저가 닫힐 때 손실되기 때문에 좋지 않습니다. 사용자가 새 브라우저 세션에서 이메일을 다시 클릭하면 검색되지 않습니다. 데이터베이스처럼 영구 저장 장치가 필요합니다.

관련 문제