ASP.NET Core MVC 3.1 - 使控制器在其自己的区域之外无法访问
创始人
2024-09-15 06:30:38
0

要使控制器在其自己的区域之外无法访问,您可以在ASP.NET Core MVC 3.1中使用自定义路由约束。以下是一个解决方案的示例:

首先,在您的项目中创建一个自定义路由约束类,该类将用于限制控制器的访问范围。例如,创建一个名为"AreaRouteConstraint.cs"的文件,并添加以下代码:

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;

public class AreaRouteConstraint : IRouteConstraint
{
    private readonly string _areaName;

    public AreaRouteConstraint(string areaName)
    {
        _areaName = areaName;
    }

    public bool Match(HttpContext httpContext, IRouter route, string routeKey,
                      RouteValueDictionary values, RouteDirection routeDirection)
    {
        if (values.TryGetValue("area", out object areaValue))
        {
            string area = areaValue.ToString();
            return string.Equals(area, _areaName, StringComparison.OrdinalIgnoreCase);
        }

        return false;
    }
}

然后,在您的控制器类上应用路由约束。例如,假设您的控制器位于名为"Admin"的区域中,您可以在控制器类上使用[Route]属性,并指定AreaRouteConstraint来限制访问范围。例如:

[Area("Admin")]
[Route("{area:exists}/{controller=Home}/{action=Index}")]
public class HomeController : Controller
{
    // 控制器的操作方法
}

在上面的代码中,我们将AreaRouteConstraint指定为{area:exists}路由约束,这将确保只有area值等于"Admin"的请求才能访问控制器。

最后,您需要在Startup.cs文件的ConfigureServices方法中注册自定义路由约束。例如,将以下代码添加到ConfigureServices方法中的services.AddControllersWithViews()之前:

services.Configure(options =>
{
    options.ConstraintMap.Add("area", typeof(AreaRouteConstraint));
});

通过这样做,您告诉ASP.NET Core MVC将area约束映射到AreaRouteConstraint类。

现在,只有area值等于"Admin"的请求才能访问带有[Area("Admin")]属性的控制器。

注意:为了使上述示例正常工作,您还需要确保项目中已经正确配置了区域。

相关内容

热门资讯

教会辅助!甘肃胡乐白银辅助,新... 教会辅助!甘肃胡乐白银辅助,新畅游互娱科技,关于开挂(有挂猫腻);无需打开直接搜索打开薇:13670...
传授辅助!来来拼十免费辅助,新... 新老夫子开挂系统是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微...
必看辅助!非凡贪玩技巧,福建天... 必看辅助!非凡贪玩技巧,福建天天开心辅助器是真的吗,2分钟细说开挂(有人有挂)《详细加薇136704...
详细辅助!518互游辅助器免费... 您好:这款518互游辅助器免费下载游戏是可以开挂的,确实是有挂的,很多玩家在这款518互游辅助器免费...
正品辅助!胡乐辅助脚本是真的假... 正品辅助!胡乐辅助脚本是真的假的,战神辅助器下载,热门推荐开挂(有挂工具)>>您好:软件加13670...
传授辅助!玉海楼茶苑辅助工具,... 您好:这款创思维激k看底牌辅助游戏是可以开挂的,确实是有挂的,很多玩家在这款创思维激k看底牌辅助游戏...
曝光辅助!广东雀神智能插件是真... 【亲,广东雀神智能插件是真的 这款游戏可以开挂的,确实是有挂的,很多玩家在这款广东雀神智能插件是真的...
实测辅助!微信闲来神器软件下载... 实测辅助!微信闲来神器软件下载,518互游辅助,一分钟秒懂开挂(有挂秘籍) 了解更多开挂安装加(13...
科技辅助!新518互游脚本,九... 科技辅助!新518互游脚本,九酷互娱辅助,实测交流开挂(有挂方针);无需打开直接搜索薇:136704...
发现辅助!青龙辅助器,顺欣茶楼... 大家好,今天小编来为大家解答顺欣茶楼辅助软件这个问题咨询软件客服可以免费测试直接加微信(136704...