Я хочу предотвратить прямой доступ к представлению.У меня есть представление, которое отображает Email Confirmed, когда нажимается ссылка для подтверждения в электронном письме пользователя.Но проблема в том, что URL-адрес этого представления может быть доступен напрямую, я просто хочу, чтобы он был доступен при нажатии на ссылку в электронном письме.
Я пробовал эту опцию, но продолжаю получать ошибку, как UrlReferer недоступен в ядре Asp.net.этот код не будет работать в ядре asp.net, может кто-нибудь помочь мне, пожалуйста.
Как получить доступ к этим значениям в ASp.net Core 2.x:
filterContext.HttpContext.Request.UrlReferrer
filterContext.HttpContext.Request.Url.Host
filterContext.HttpContext.Request.UrlReferrer.Host
Код, который я нашел наПереполнение стека - но для этого нужен System.Web, который недоступен в ядре asp.net.
public class NoDirectAccessAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Request.UrlReferrer == null ||
filterContext.HttpContext.Request.Url.Host != filterContext.HttpContext.Request.UrlReferrer.Host)
{
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new { controller = "Home", action = "Index", area = "" }));
}
}
}
Рекомендуемый способ использования пользовательского атрибута
[NoDirectAccess]
public ActionResult MyActionMethod()