Ответ 1
Try:
var url = filterContext.HttpContext.Request.Url;
Я пишу атрибут фильтра авторизации и не знаю, как получить текущий 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-адрес строки из текущего запроса?
Try:
var url = filterContext.HttpContext.Request.Url;
Чтобы получить полный URL
, вы можете попробовать, как предложено @rboarman
, но обычно RedirectUrl
будет относительным URL, и для этого вам нужно попробовать RawUrl
свойство объекта Request
.
filterContext.HttpContext.Request.Url ===> http://somesite.com/admin/manage
filterContext.HttpContext.Request.RawUrl ====> /admin/manage
EDITED: Исправлен второй пример
В моем конкретном случае я был после URL UrlReferrer
.
filterContext.HttpContext.Request.UrlReferrer
Это позволяет мне перенаправить пользователя обратно на страницу, перед которой он пытался получить доступ к действию, к которому у него нет доступа.