【问题标题】:Has NoDirectAccessAttribute changed for .Net 6?.Net 6 是否更改了 NoDirectAccessAttribute?
【发布时间】:2023-01-22 00:45:37
【问题描述】:

这是一个愚蠢的问题,但是当我试图阻止用户在 asp.net 应用程序中查看受限页面时,我发现了一个属性,正如我所见,它非常有用

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;


[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
internal class NoDirectActionAttribute : 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 = "" }));
        }
    }
}

当我试图将它应用到我的项目时,我遇到了一些“包含定义错误”。

如您所见,我在.UrlRefferer.Url 上遇到了这个错误

这是我仅有的“显示潜在修复”建议。我没有using 或语法修复建议。

如果这是一个愚蠢的问题,我很抱歉。

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    有了这个你就解决了。

    if (filterContext.HttpContext.Request.GetTypedHeaders().Referer == null ||
                        filterContext.HttpContext.Request.GetTypedHeaders().Host.Host.ToString() != filterContext.HttpContext.Request.GetTypedHeaders().Referer.Host.ToString())
                    {
                        filterContext.HttpContext.Response.Redirect("/");
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-16
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多