我的控制器具有相同的操作,但具有不同的授权过滤器。
public class RoomAController:Controller
{
[Authorize(Roles = "RoomAEditors")]
public ActionResult SaveNote()
{
...
}
}
public class RoomBController:Controller
{
[Authorize(Roles = "RoomBEditors")]
public ActionResult SaveNote()
{
...
}
}
两个控制器中的SaveNote
代码完全相同。所以我想把它放到像这样的基本控制器中。
public abastract class BaseController:Controller
{
public ActionResult SaveNote()
{
...
}
}
有了这个基本控制器,如何在各个控制器中添加操作筛选器?
public class RoomBController:BaseController
{
[Authorize(Roles = "RoomBEditors")]
// how to add different authorization filters on the SaveNote action?
}
在我的抽象基本控制器上,有一个SaveNote
操作。
您可以在 BaseController 中实现 SaveNote 方法,并使用适当的授权过滤器角色在 RoomA 和 RoomB 控制器中重写该方法。
public abstract class BaseController : Controller
{
virtual public ActionResult SaveNote()
{
throw new NotImplementedException();
}
}
public class RoomAController : BaseController
{
[Authorize(Roles = "RoomAEditors")]
public override ActionResult SaveNote()
{
return base.SaveNote();
}
}
public class RoomBController : BaseController
{
[Authorize(Roles = "RoomBEditors")]
public override ActionResult SaveNote()
{
return base.SaveNote();
}
}
您将在每个 SaveNote() 操作的 BaseController (Base) 上调用 SaveNote()。