Должен ли я реализовать очистку / проверку пользовательских данных в качестве промежуточного программного обеспечения?

Я переопределяю свою систему управления пользователями с помощью Slim, и я пытаюсь выяснить, где Я должен сделать пользовательскую очистку / проверку данных. Я читал о промежуточном программном обеспечении, и мне интересно, является ли это подходящим способом реализации проверки данных.

Мой план проверки состоит в том, чтобы использовать схему проверки (простой файл JSON) для каждого запроса, который содержит некоторые пользовательские данные (то есть формы). Однако разные формы, очевидно, будут использовать разные схемы, и могут быть некоторые типы проверки, которые не могут быть обработаны одной схемой.

Таким образом, любое промежуточное программное обеспечение, которое я реализую, должно будет решить, какую схему использовать в зависимости от маршрута. Кроме того, для некоторых маршрутов потребуется дополнительная логика проверки помимо той, которая представлена ​​в схеме. Для меня это звучит как неправильный подход — разве промежуточное программное обеспечение не должно быть достаточно «общим», выполняя ту же логику при каждом запросе / ответе?

Другой подход заключается в том, чтобы иметь некоторый объект проверки, который я инициализирую на каждом маршруте с соответствующей схемой, а затем внедряю свое приложение Slim.

Какой подход был бы более разумным?

1

Решение

Использование глобального промежуточного программного обеспечения не имеет смысла, так как в итоге вы соединяете список параметров каждой конечной точки вместе.

Два варианта, которые я бы рассмотрел:

  1. Реализовать как маршрут промежуточное программное обеспечение, так что вы можете иметь различные фильтрации / проверки для каждой конечной точки.

    например

    function fooFilter() {
    // filter/validate GET variables here and set back into request.
    }
    
    $app->get('/foo', 'fooFilter', function () {
    // "controller" logic
    });
    

    Преимущество этого состоит в том, что логику контроллера не нужно загромождать проверкой, как это уже было сделано.

  2. Фильтр / проверка в логике контроллера. Основным преимуществом здесь является то, что вы можете легче проводить аудит, если переменная GET используется без предварительной фильтрации / проверки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]