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

白昼怎懂夜的黑 提交于 2019-12-20 10:16:41

问题


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?


回答1:


Try:

var url = filterContext.HttpContext.Request.Url;



回答2:


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




回答3:


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.




回答4:


This is the highest ranked result on Google so in Asp.net Core 2.0 this is how I'm doing it:

context.HttpContext.Request.Url();

using this extension method:

/// <summary>
/// Returns the absolute url.
/// </summary>
public static string Url(this HttpRequest request)
{
    return $"{request.Scheme}://{request.Host}{request.Path}{request.QueryString}";
}


来源:https://stackoverflow.com/questions/10761551/how-do-i-get-the-current-url-from-within-a-filterattribute

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!