首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将动作限制在特定的命名空间中?

如何将动作限制在特定的命名空间中?
EN

Stack Overflow用户
提问于 2016-06-07 12:05:07
回答 1查看 50关注 0票数 0

我已经创建了一个解决方案,并将四个项目添加到其中。

它包含三个mvc站点( SiteA、SiteB、SiteC)和一个公共核心类库(名称为核心项目)。现在,所有mvc站点的控制器都移到了核心项目中。我将核心项目引用到这些mvc站点。我尝试在这些站点中注册路由。

SiteA:

代码语言:javascript
运行
复制
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            name: "AWebDefault",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "Core.AWeb.Controllers" }
        );  

SiteB:

代码语言:javascript
运行
复制
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            name: "BWebDefault",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "Core.BWeb.Controllers" }
        );     

SiteC:

代码语言:javascript
运行
复制
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            name: "CWebDefault",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "Core.CWeb.Controllers" }
        );    

问题是:当我访问siteA时,如何防止用户访问siteB控制器或SiteC控制器?我想要的控制器只能在特殊的命名空间中找到。无法在其他命名空间中搜索。那么该如何解决呢?

EN

回答 1

Stack Overflow用户

发布于 2016-06-07 14:12:17

您可以创建action filtercustom action filter,并在操作或控制器之前使用它。对于此存储命名空间名称和签入筛选器。如果目标操作命名空间与命名空间名称相同,则允许访问。另一个解决方案是使用Area。要生成到其他区域的链接,必须在这些方法的routeValues参数中显式传递目标区域名称(Linking Between Areas

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37670279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档