31

Authorize 필터 속성을 쓰고 있습니다. adn LogOn 작업에 매개 변수로 전달할 수 있도록 현재 url을 문자열로 가져 오는 방법을 찾는 데 문제가 있습니다. 목표는 사용자가 성공적으로 로그온하면 원래 액세스하려고 시도했던 페이지로 리디렉션된다는 것입니다.FilterAttribute에서 현재 URL을 가져 오는 방법은 무엇입니까?

public override void OnAuthorization(AuthorizeContext filterContext) 
{ 
    base.OnAuthorization(filterContext); 

    ... my auth code ... 
    bool isAuth ; 
    ... my auth code ... 

    if(!isAuth) 
    { 
     filterContext.Result = new RedirectToRouteResult(
      new RouteValueDictionary { 
       { "Area", "" }, 
       { "Controller", "Account" }, 
       { "Action", "LogOn" }, 
       { "RedirectUrl", "/Url/String/For/Currnt/Request" } // how do I get this? 
      } 
     ); 
    } 
} 

현재 요청에서 전체 문자열 URL을 얻으려면 어떻게해야합니까?

답변

59

봅니다 :

var url = filterContext.HttpContext.Request.Url; 
+6

RawUrl (filterContext.HttpContext.Request.RawUrl)을 사용하여 도메인이없는 URL을 얻을 수도 있습니다 –

15

얻으려면 @rboarman하지만 의해 제안 당신이 시도 할 수있는 완전한 URL은 일반적으로 RedirectUrl상대 URL 될 것입니다 그리고 당신은의하여 RawUrl 속성을 시도해야 Request 개체.

filterContext.HttpContext.Request.Url ===> http://somesite.com/admin/manage 

filterContext.HttpContext.Request.RawUrl ====> /admin/manage 

편집 : 나는 UrlReferrer URL 후였다 내 특정 경우에는 두 번째 예제를

+0

두 번째 예제에서 "RawUrl"을 사용 했습니까? –

+0

-1 'Url'의 값을 관찰해도 불가사의하게 절대 값이 아닌 상대 값이됩니다. –

+0

@JoshNoe 예 두 번째 예에서 RawUrl을 의미했습니다. 나는 요즘 너무 어리석은 데, 나는 당신의 코멘트를 보지 못했습니다. – VJAI

4

를 수정했습니다.

filterContext.HttpContext.Request.UrlReferrer 

이 사람은 나를 다시 그가 액세스 권한이없는 작업에 액세스하기 전에 있던 페이지로 사용자를 리디렉션 할 수 있습니다.