У меня похожая настройка, но в моих устройствах iOS приходится общаться со страницами, которые отвечают в JSON.Я закончил тем, что создал ActionFilterAttribute
, который проверяет, что устройство 1) добавлено в список разрешенных устройств по его UDId и 2), что пользователь, назначенный устройству, активен (в настоящее время используется).Проблема в том, что это вынуждает меня использовать POST-запросы, что для меня на самом деле не проблема, но для вас это может быть, так как вы можете разрешать GET-запросы.Я также могу ошибаться, я думаю, что механизм связывания по-прежнему будет анализировать объекты из GET-запроса, и фильтр, вероятно, все еще будет работать.fit:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
internal sealed class VerifyDeviceAttribute : ActionFilterAttribute {
[Inject]
public DeviceProvider DeviceProvider { private get; set; }
public override void OnActionExecuting(
ActionExecutingContext ActionExecutingContext) {
string UDId = ActionExecutingContext.HttpContext.Request.Form["Authorization.UDId"];
if (this.DeviceProvider.Exists(UDId) && !this.DeviceProvider.Get(UDId).User.Active) {
ActionExecutingContext.Controller.ViewData.ModelState.AddModelError("User", "The user is not active");
} else if (!this.DeviceProvider.Exists(UDId)) {
ActionExecutingContext.Controller.ViewData.ModelState.AddModelError("UDId", "The UDId is empty");
};
}
}
Вы можете заметить, что я помещаю ошибки в контроллер ModelState
, если они есть, и в результатах действий я всегда проверяю состояние модели перед форматированием ответа, поэтому убедитесь, чтоты всегда проверяешь свой ModelState
!