Я написал пользовательский Авторизоваться Фильтр:Изменение ModelState при неудачной авторизации
public class MyAuthenticationAttribute : FilterAttribute, IAuthorizationFilter{
// Do the authorization
if (!isAuthenticated)
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
Этот фильтр имеет различные условия, и в конце концов установит результат Unauthorized
, если пользователь не имеет права и не будет делать ничего, если пользователь авторизован.
Он используется в приложении SPA, и почти все мои методы вызывают из сеток. В этих сетках у меня есть собственный обработчик ошибок, который будет показывать дружественные уведомления, если что-то пойдет не так. Все ошибки добавляются к ModelState
.
Теперь я хотел бы управлять неавторизованным поведением и изменять ModelState
, когда пользователь не уполномочен делать, например, удаление.
Просьба указать, как мне его реализовать и какие методы мне нужно переопределить.
UPDATE
я могу изменить состояние модели этой линии:
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
?