ASP.NET MVC中具有不同属性的部分控制器

时间:2017-08-26 12:41:45

标签: c# asp.net-mvc

假设我有一个控制器,它具有到某种角色的路由,而其他路由器则用于其他角色。我想让代码更干净,将这些路由分成几个部分类。我知道我可以做到。

但我想知道我是否可以这样做:

[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
}

并且每个分部类中的路由只获得该部分类的属性。

有可能吗?

2 个答案:

答案 0 :(得分:0)

在您的示例中,只有一个具有两个属性的类TheController。最好的方法是让两条路线和一条路线约束不绑定到允许基于角色的一个或另一个的任何参数。

答案 1 :(得分:0)

我知道这很旧,但是您可以选择将AuthorizeAttribute添加到控制器具有的每个单独的公共方法中。这有点麻烦,因为每个方法都需要一个属性,但是它可以实现您想要的。

或者,您可以创建具有适当属性的内部控制器/服务,并使主“ TheController”将调用转发给这些控制器/服务。