2013-10-19 3 views
0

아이디어는 프로모션 코드 시스템을 가지므로 사용자가 "EnterPromoCode.aspx"를 사용하고 유효한 프로모션 코드를 입력하면 웹 사이트에서 "PromoDeals.aspx"로 안내합니다. 그러나 나는 누군가가 단순히 "PromoDeals.aspx"를 타이핑하고 그것에 갈 수 있기를 원하지 않습니다.ASP.NET 웹 페이지에 대한 직접 액세스를 어떻게 제한합니까?

사용자가 (Page_Load 메서드를 통해) 어디에서 왔는지 확인하기 위해 PromoDeals.aspx에 쿼리 문자열 매개 변수를 전달할 생각 이었지만 직접 수행 할 방법이 있는지 확실하지 않습니다. 이. 어떤 충고?

+2

세션에 값을 저장하고 PromoDeals.aspx를 확인할 수 있습니다. – Nenad

+0

@Nenad 어떤 값을 저장 하시겠습니까? –

+0

유효한 프로모션 코드 – Nenad

답변

3

기본적으로, 아이디어는 다음과 같다 : 사용자가 "비밀"을 알고 있는지 페이지 검사의

  1. 하나. 이것은 일종의 승인입니다.

  2. 일부 다른 페이지는 사용자가 승인 된 경우에만 작동합니다.

성공적인 승인에 대한 정보는 다양한 페이지간에 공유되는 특정 위치에 저장되어야합니다. 페이지간에 정보를 공유하는 데는 여러 가지 방법이 있습니다.

) 세션. 사용자가 올바른 프로모션 코드를 제출하면 인증 페이지는 세션 컬렉션에 무언가를 저장합니다. 이는 성공적인 승인의 사실을 나타내는 플래그 일 수도 있고 나중에 프로모션 코드가 필요할 수도있는 경우에 해당 될 수 있습니다.

다른 페이지는 Page_Load 핸들러에서 Session에 저장된 내용 (또는 저장되지 않음)을 확인하고 수행 할 작업을 결정할 수 있습니다. 오류를 계속하거나 렌더링하거나 다른 페이지로 리디렉션합니다. 참고 : 세션이 만료됩니다. 세션을 끝낼 때 잊어 버리는 상점은 무엇입니까?

B) 쿠키. 이렇게하면 정보를 원하는만큼 오래 보관할 수 있습니다. 만료일을 설정합니다. 그러나 사용자의 브라우저에 저장되므로 단점이 있습니다. 브라우저가 쿠키 저장을 거부 할 수 있습니다. 사용자가이를 지울 수 있습니다.

C) 데이터베이스. 사용자가 한 번만 권한을 부여 받도록하려면이 정보를 데이터베이스에 저장하십시오.

3

PromoDeals.aspx에서 게시 또는 가져 오기 (또는 둘 모두 지원)가 필요할 수 있습니다.

PromoDeals.aspx의 Page_Load에서 Post를 사용하는 경우 Request.Form [ "PromoCode"]을 확인하고 유효성을 검사 할 수 있습니다. 유효하지 않은 경우 Response.Redirect를 EnterPromoDeals.aspx로 되돌릴 수 있습니다.

마찬가지로 GET을 사용하는 경우, Request.QueryString을 [ "PromoCode을"] 확인하고 유효성을 검사합니다 (dB에서 확인하거나하지 않을 경우의 유효한 promocode, 멀리 페이지에서 사용자를 리디렉션하면 무엇이든 볼 수 있습니다.

프로모션 코드의 검증은 또한 사용자가 유효한 프로모션 코드를 입력하면, 당신은 세션 변수 설정, EnterPromoCode.aspx에서 할 수있는,이 설정 한 경우

Session["PromoCode"] = Request.Form["PromoCode"].ToString(); 

이 (유효한 코드가 입력되었다)로 리디렉션 PromoDeals.aspx 그리고이 세션 변수가 설정되지 않은 경우 PromoDeals.aspx에서 사용자를 멀리 보냅니다.

관련 문제