Подтвердить что ты не робот

Как получить текущий Url из FilterAttribute?

Я пишу атрибут фильтра авторизации и не знаю, как получить текущий url в виде строки, поэтому я могу передать его как параметр для действия LogOn. Цель состоит в том, что если пользователь успешно войдет в систему, они будут перенаправлены на страницу, с которой они изначально пытались получить доступ.

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-адрес строки из текущего запроса?

4b9b3361

Ответ 1

Try:

var url = filterContext.HttpContext.Request.Url;

Ответ 2

Чтобы получить полный URL, вы можете попробовать, как предложено @rboarman, но обычно RedirectUrl будет относительным URL, и для этого вам нужно попробовать RawUrl свойство объекта Request.

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

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

EDITED: Исправлен второй пример

Ответ 3

В моем конкретном случае я был после URL UrlReferrer.

filterContext.HttpContext.Request.UrlReferrer

Это позволяет мне перенаправить пользователя обратно на страницу, перед которой он пытался получить доступ к действию, к которому у него нет доступа.