在ASP.NET MVC中,可以通过以下代码示例来限制用户访问非路由URL:
public class RestrictAccessAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { string routeUrl = filterContext.HttpContext.Request.AppRelativeCurrentExecutionFilePath; if (!IsRouteUrl(routeUrl)) { filterContext.Result = new HttpNotFoundResult(); } }
private bool IsRouteUrl(string url)
{
var routes = RouteTable.Routes;
var requestContext = new RequestContext(new HttpContextWrapper(HttpContext.Current), new RouteData());
var routeData = routes.GetRouteData(requestContext);
return routeData != null;
}
}
上面的代码定义了一个名为“RestrictAccessAttribute”的特性,它将被应用于ASP.NET MVC控制器或操作方法。它通过使用OnActionExecuting方法在操作执行前检查请求的URL是否是路由URL。如果不是,就会返回一个HttpNotFoundResult结果。
为了使用这个特性,只需要将其放置在控制器或操作方法上即可。例如:
[RestrictAccess] public ActionResult MyAction() { // ... }
这样,如果用户尝试访问非路由URL,则会返回一个404错误。