2014-12-23 2 views
1

좋아, 먼저 내가하고있는 일에 대해 잘 모릅니다.마지막 동작/URL 찾기 ASP.NET MVC 5

MVC 프로젝트에서 여러 페이지가 끊임없이 다른 페이지에 나타납니다. 예를 들어 내 모델 중 하나에 대한 내 편집 페이지는 세부 정보 페이지 또는 Crud Index 페이지의 관리 링크에서 가져올 수 있습니다. 편집이 끝나면 사용자를 적절한 위치로 되돌리고 싶습니다. Identity returnUrl 항목을 이해하지 못한다고 생각하면 두 개의 쿠키를 생성하는 자체 메서드를 작성 했으므로 결국에는 두 개가 필요하지 않을 수 있지만 현재는 두 개가 있으므로 Chrome F12 도구에서 업데이트를 모니터링하고 각각을 시간 컨트롤러 액션에서이 메서드를 사용하면 올바르게 작동합니다. 나는 또한 이것에 대한 어떤 테스트도하지 않는다고 말하고 싶다. 내 테스트는 시행 착오와 Chrome F12입니다.

private void LastActionHero() 
{ 
    string lastUrl = null; 
    var currentUrl = Request.Url.LocalPath; 

    if (Request.Cookies["currentUrl"] != null) 
    { 
     lastUrl = Request.Cookies["currentUrl"].Value; 
    } 

    if (lastUrl != currentUrl) 
    { 
     var current = new HttpCookie("currentUrl", currentUrl) 
         {Expires = DateTime.Now.AddDays(1)}; 
     Response.Cookies.Set(current); 
     var previous = new HttpCookie("lastUrl", lastUrl) 
         { Expires = DateTime.Now.AddDays(1) }; 
     Response.Cookies.Set(previous); 
    } 
} 

질문 : 여기

코드입니다 가이 일을 더 나은 방법이 있나요이는 안전합니까? 사이트의 일부가 로그인 뒤에 있지 않습니다. 그게 중요합니까?

또한이 구현 방법에 대한 아이디어가 있습니까?

나는 아직도 어떻게 사용할지에 대해 연구 중이다.

enter image description here

: 여기

은 쿠키의 스크린 샷, 그들은 모든 방법을 사용하여 내가 3 개 또는 4의 행동 사이에 앞뒤로 여러 번 가서 잘 작동하는 것, 여기 올바른 지난 2 개 URL을 보여줍니다

답변

1

"쿠키 접근 방식"은 동일한 세션의 사용자가 한 번에 한 페이지 씩만 열면 작동합니다. 사용자가 그러한 페이지를 입력하면 하나의 탭에서 다른 하나의 탭을 떠나기 전에 더 이상 작동하지 않습니다.

이 문제에 대한 한 가지 해결책은 해당 페이지에 "return-url"을 제공하는 것입니다. 따라서 /Edit/1 대신 /Edit/1?returnUrl=CurrentUrl과 같은 것을 호출 한 다음 편집이 완료되면 올바른 페이지로 돌아가려면 편집 페이지에서 해당 매개 변수로 작업하십시오.

+0

여러 탭 문제에 대한 요지를 확실히 볼 수 있습니다. 나는 동의 할 것이고 그것은 내가 생각하지 않은 것입니다. 당신의 생각은 간단합니다, 나는 그것을 좋아합니다! –

+0

여러 탭 문제를 복제하려고하는데 그 URL을 잘 추적하는 것 같습니다. 어쩌면 내가 너를 오해하고있다. –

+0

@ EricB : 한 탭에서 페이지를 연 다음 두 번째 탭에서 다른 위치의 페이지를 열면 동일한 세션에있는 경우 두 탭에 대한 쿠키가 변경됩니다. – ChrFin