【发布时间】:2017-08-26 12:41:45
【问题描述】:
假设我有一个控制器,它具有到某种角色的路由和其他角色的其他路由器。我想让代码更清晰地将这些路由分成部分类。我知道我能做到。
但我想知道我是否可以这样做:
[Authorize(Roles = "Admin")]
[MyLogger]
public partial class TheController{
// Admin routes
}
和
[Authorize(Roles = "OtherRole")]
public partial class TheController{
// Other routes that require auth
}
和
[AllowAnonymous]
public partial class TheController{
// public routes
}
并且每个分部类中的路由仅获取该分部类的属性。
有可能吗?
【问题讨论】:
-
我假设你想要的是区域 - 参考Organizing an Application using Areas
-
我看了链接,但如果我理解得很好,创建不同的控制器没有区别。使用区域,网址也会发生变化,对吗? PS这是一项宁静的服务,我没有意见。我的情况是,我已经在生产中拥有所有这些路线,并且正在重新组织代码以轻松更改这些路线组的属性,所以我不想更改任何 url
-
您无法通过拥有多个与您显示的名称相同的控制器来做到这一点
-
我明白了 :( ...你有什么其他方法可以做我想做的事吗?
-
您可以创建多个具有不同名称的控制器,然后添加路由以保持不同控制器之间的 URL 一致。我理解您的初衷,但是(即使它按预期工作)它增加了在安全方面犯错误的可能性(例如,如果您或未来的开发人员不理解/不记得它是如何工作的)。
标签: c# asp.net-mvc