Валидация параметров маршрутизации 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.

Другие вопросы по тегам