我写了一个自定义授权过滤器:
public class MyAuthenticationAttribute : FilterAttribute, IAuthorizationFilter{
// Do the authorization
if (!isAuthenticated)
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
此过滤器具有各种条件,如果用户未获得授权,最终会将结果设置为Unauthorized
,如果用户获得授权,则不会执行任何操作。
它正在SPA应用程序中使用,几乎所有方法都是从网格中调用的。在那些网格中,我有自定义错误处理程序,如果出现问题,将显示友好通知。所有错误都会添加到ModelState
。
现在,我想管理未经授权的行为,并在未授权用户执行删除时更改ModelState
。
请指导我应该如何实施它以及我需要覆盖哪些方法。
更新
我可以用这一行改变模型状态:
filterContext.Controller.ViewData.ModelState.AddModelError("", "GO AWAY!");
但它不会向用户返回任何内容。我尝试在质询方法中使用IAuthenticationFilter
并添加ModelState
错误,但它也没有用。
如果我可以返回一些Json
数据,我想它会正常工作。
我需要以某种方式获得此操作方法的类似行为:
public ActionResult Delete([DataSourceRequest] DataSourceRequest request, object model)
{
ModelState.AddModelError("", "error");
return Json(new[] { model}.ToDataSourceResult(request, ModelState));
}
有可能吗?您对实施此授权和返回Json
数据有任何建议吗?
答案 0 :(得分:0)
您可以使用transform-style: preserve-3d
返回您想要的任何结果,在我的情况下,我想取消Kendo Grid的更改并添加我使用此代码实现的模型状态错误:
context.Result