gpt4 book ai didi

c# - 拒绝对操作方法的直接 URL 访问

转载 作者:可可西里 更新时间:2023-11-01 09:01:21 24 4
gpt4 key购买 nike

我正试图找到一种方法来拒绝对我的操作方法的任何直接访问。基本上,我希望我的用户点击链接进行导航,而不是直接在浏览器的地址栏中输入 URL。

现在我知道这可以通过检查请求对象中的 urlreferrer 来完成,但这有点不可靠且薄弱,因为 urlreferrer 很容易被修改,并且一些安全套件实际上将其从请求中删除。

那么你们中有人知道在 asp.net mvc3 中执行此操作的方法吗?

最佳答案

下面是 NoDirectAccessAttribute 方法的代码,用于限制对应用 NoDirectAccess 属性的任何类或操作方法的直接访问

using System;
using System.Web.Mvc;
using System.Web.Routing;

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

对于您不希望用户直接请求的任何 Controller 或操作方法,使用如下操作过滤器

[NoDirectAccess]
public ActionResult IsUsernameUnique()

在上面的示例中,对 IsUsernameUnique 操作方法的任何直接访问都会自动将用户重定向到 Home/Index 操作方法。

关于c# - 拒绝对操作方法的直接 URL 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8336810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com