我正在使用自定义操作过滤器来授权用户使用Actions,其中一些返回ActionResult而其他人返回JsonResult。
对于每个常规操作系统都执行OK。但是,现在我有另一个要求来实现我的设计失败的地方。
视图发布到:
[AuthorizationFilter(Entity = AuthEntity.MyItem, Permission = AuthPermission.Write)]
public JsonResult Edit(MyModel model)
我检查用户对写入操作的授权。此检查执行正常。但实际上我的Action只检查一个条件并将Action重定向到Controller中的另一个Action,如下所示:
[AuthorizationFilter(Entity = AuthEntity.MyItem, Permission = AuthPermission.Write)]
public JsonResult Edit(MyModel model)
{
if (model.Id == 0)
{
return Insert(model);
}
else
{
return Update(model);
}
}
此外,更新操作还会检查需要其他授权的特定状态:
public JsonResult Update(MyModel model)
{
if (model.StatusId == (int)Shared.Enumerations.Status.Approved)
{
return UpdateRequiresApproval(model);
}
else
{
return UpdateRequiresNonApproval(model);
}
}
[AuthorizationFilter(Entity = AuthEntity.MyItem, Permission = AuthPermission.Approve)]
public JsonResult UpdateRequiresApproval(MyModel model)
问题是,虽然我在 UpdateRequiresApproval 操作上定义了自定义属性过滤器,但它不会运行过滤器(可能),因为它通过代码调用被另一个操作重定向,但是不是直接来自View。
当代码落入 UpdateRequiresApproval 操作时,如何让我的过滤器运行?
问候。