Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get the current Url from within a FilterAttribute?

I am writing an Authorize filter attribute adn I'm having trouble figuring out how to get the current url as a string so I can pass it as a parameter to the LogOn action. The goal is that if a user successfully logs on, they will be redirected to the page they were originally trying to access.

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?
            }
        );
    }
}

How do I get the full string Url from the current request?

like image 572
quakkels Avatar asked May 25 '12 21:05

quakkels


3 Answers

Try:

var url = filterContext.HttpContext.Request.Url;
like image 67
rboarman Avatar answered Nov 04 '22 22:11

rboarman


To get the complete URL you can try as suggested by the @rboarman but usually the RedirectUrl will be the relative url and for that you have to try the the RawUrl property of the Request object.

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

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

EDITED: Fixed the second example

like image 28
VJAI Avatar answered Nov 04 '22 22:11

VJAI


In my specific case I was after the UrlReferrer URL.

filterContext.HttpContext.Request.UrlReferrer

This one let me redirect the user back to the page he was before trying to access an action he doesn't have permission to access.

like image 7
Leniel Maccaferri Avatar answered Nov 04 '22 21:11

Leniel Maccaferri