Валидация параметров маршрутизации aurelia
Я пытаюсь понять, как лучше всего справляться с двумя типами плохих маршрутов.
- Одним из них является проверка типа. Поскольку я знаю, что мой идентификатор должен быть числовым значением
- Два, когда они поставили в плохой номер заказа
Для проверки типа лучший способ справиться с этим - просто вставить проверку в javascript в метод активации в модуле заказа и перенаправить в не найденный модуль в случае сбоя? ИЛИ есть ли какая-то хитрость Аурелии, чтобы заставить это быть неизвестным маршрутом или чем-то...
Точно так же для номера плохого заказа, если я выполняю выборку для заказа, и он не возвращает результатов, я просто перенаправляю?
По сути, просто интересно, является ли это лучшей практикой или есть лучший способ справиться с этим?
configureRouter(config: RouterConfiguration, router: Router) {
config.title = 'My Aurelia APP';
config.map([
{ route: ['', "orders"], name: 'orders', moduleId: 'orders', nav: true, title: 'List Of Cool Stuff' },
{ route: ':id', moduleId: 'order', name: 'Order Info' }]);
this.router = router;
config.mapUnknownRoutes('not-found');
}
2 ответа
Проверка номера заказа должна выполняться как часть кода модели представления. Я предполагаю, что вы не будете знать, действителен ли номер заказа, пока он не попадет на сервер. так как вы говорите, в режиме просмотра модели активируйте:
activate(params) {
let orderId = params.id;
return this.serverClient.get("api/orders", orderId).then(data =>
{
//do order module code
}).fail(error =>
{
this.router.navigate('unknown-error-route');
})
);
}
Я также предполагаю, что если заказ принадлежит другому пользователю на сайте, вы не хотите, чтобы этот пользователь имел доступ к своей информации. Поэтому я бы выбрасывал исключение безопасности или что-то еще на стороне сервера, а затем в клиенте всегда перенаправлял на неизвестный маршрут ошибки или что-то, чтобы злоумышленник не знал, произошел ли сбой, потому что заказ существует и принадлежит кому-то другому или что порядок не существует вообще. Или вы можете вернуться назад или что-то.
Я хотел бы проверить номер заказа, прежде чем запрашивать его. Это позволит сэкономить в обоих направлениях и может отображаться в пользовательском интерфейсе, что оно недопустимо. Вы также можете проверить диапазон, чтобы убедиться, что это допустимый диапазон.
Проверка может быть на входе и перед отправкой запроса API.