아래 내용은 데브렉 강의 중에서 로그인하지 않은 페이지에서 튕겨 나온 후 원래 보려던 페이지로 이동하기 관련 질문에 대한 답변을 정리해서 기록으로 남긴 내용입니다.
[질문]
처음 로그인 하지 않은 상태에서 예를 들어 아래와 같은 경우에
1. 바로 '로그인' 버튼 클릭 -> 로그인 페이지 로그인 후 메인페이지 이동
2. '주문 접수' 버튼 클릭 -> 로그인 페이지 로그인 후 주문 접수 페이지 이동
3. '주문 조회' 버튼 클릭 -> 로그인 페이지 로그인 후 주문 조회 페이지 이동
어떤 메뉴를 클릭하여 로그인 페이지가 실행 되었느냐에 따라 관련 페이지로 이동하는 기능을 구현하고 싶은데요.
막상 구현하려니 어찌해야 할지 잘 떠오르지 않아서요. 어떤식으로 처리하는게 효과적인지요?
[답변]
안녕하세요.
질문하신 내용은 구글에서 "ASP.NET Login ReturnUrl" 등으로 검색을 하시면 관련 정보를 많이 얻으실 수 있습니다.
참고하시라고 제가 사용하는 코드 조각을 알려드리면 아래와 같습니다.
각각의 페이지의 Page_Load 이벤트 처리기에서:
if (현재 페이지를 볼 수 있는 권한이 있는지 없는지 확인 또는 로그인되었는지 확인 등의 코드 구현)
{
//
}
else
{
// ReturnUrl 가지고 Login 페이지로 튕겨져 나가면, 다시 로그인 후 여기 페이지로 올 수 있도록 설계됨.
Response.Redirect("~/Login.aspx?ReturnUrl=" + Server.UrlEncode(Request.RawUrl));
}
Login.aspx 페이지:
로그인 처리 후(예를 들어 로그인 버튼을 클릭한 후)...
if (String.IsNullOrEmpty(Request["ReturnUrl"]))
{
Response.Redirect("~/Default.aspx"); // 메인으로 이동
}
else
{
Response.Redirect(Request["ReturnUrl"]); // 이동하려던 페이지로 이동
}
그럼, 참고 후 완성시켜 보시기 바랍니다.