Пакет Spatie управляет проверкой ввода пользователя в первую очередь посредством набора пользовательских правил проверки Laravel и интеграции с системой проверки Laravel, обеспечивая структурированный и расширяемый подход к проверке данных до его обработки или сохранения.
Управление проверкой в пакетах Spatie
Пользовательские правила проверки
Spatie предлагает коллекцию полезных правил проверки, которые расширяют возможности нативного валидации Laravel. Эти правила могут использоваться в запросах формы Laravel или непосредственно в логике проверки контроллера. Примеры включают:- Авторизованное правило: проверяет, если пользователь зарегистрированным разрешено выполнять конкретное действие на экземпляре модели путем проверки политик, таких как сопоставление идентификаторов пользователей [1].
- Правило валюты: подтверждает, что данное вход является действительным кодом валюты, поддерживающий стандарты ISO 3166 [1].
- Правило перечисления: подтверждает, что входное значение принадлежит к предопределенному набору значений перечисления, полезно для сильно напечатанных данных [1].
- Модельсексистское правило: проверяет, существуют ли все значения в массиве в качестве атрибутов в указанной модели, обеспечивая ссылочную целостность [1].
- Правило разграниченного: проверяет строки, содержащие значения разделителей (например, электронные письма, разделенные запятыми), включая параметры для установки минимальных/максимальных элементов, разрешения дубликатов и настройки сепараторов [1].
Эти правила легко интегрируются с системой проверки Laravel, позволяя разработчикам определять их в методе «Rules ()` ‘)» или массивах встроенных валидаций.
Проверка в пакете данных Spatie Laravel
Пакет данных Spatie Laravel расширяет проверку за счет проверки данных перед созданием объектов данных. Проверка происходит автоматически, когда:- Введение объекта данных из запроса.
- Вызов метода `from` на объект данных с данными запроса.
Вы также можете вручную запустить проверку с помощью таких методов, как `validate ()` или `validateAndcreate ()`. Пакет поддерживает настройку стратегий валидации, такие как всегда проверка или полностью отключение проверки, обеспечивая мелкозернистый контроль над тем, как происходит проверка [4].
Двухэтапная проверка
Spatie исследует двухэтапный подход проверки, где:- Первый шаг применяет основные правила, чтобы гарантировать, что структура данных является звуковой и предотвращающей ошибки PHP.
- Второй шаг применяет более сложные правила проверки.
Этот подход может повысить надежность, рано улавливая ошибки и обеспечивая более четкую отзыв о валидации [7].
Дезинфицирование
В то время как пакеты Spatie фокусируются в основном на проверке, сама Laravel сама обрабатывает дезинфекцию неявно посредством проверки и привязки данных. Например, запросы формы Laravels автоматически дезинфицируют входы путем проверки и фильтрации данных до того, как они будут использованы в приложении. Правила проверки Spatie дополняют это за счет того, что данные соответствуют конкретным бизнес -правилам или форматам.Разработчики могут расширять дезинфекцию, создавая пользовательские атрибуты проверки или путем ручной дезинфекции входов до или после проверки по мере необходимости [3].
Краткое содержание
- Spatie предоставляет богатый набор правил проверки Laravel для общих и сложных сценариев проверки, таких как проверки авторизации, проверка перечисления, проверки существования и проверка разграниченного ввода [1].- Пакет данных Laravel от Spatie проверяет данные перед созданием объекта, с параметрами для ручной или автоматической проверки и настраиваемой стратегии проверки [4].
- Разрабатывается двухэтапный процесс проверки для повышения надежности проверки [7].
- Дезинфицирование обычно обрабатывается с помощью механизмов проверки и обработки ввода Ларавела, с инструментами Spatie, фокусирующимися на правильности и расширяемости проверки [3].
Этот подход гарантирует, что пользовательский ввод строго проверяется в соответствии с правилами, специфичными для приложения перед обработкой, снижением ошибок и улучшением безопасности.
Цитаты:
[1] https://github.com/spatie/laravel-validation-rules
[2] https://zapkit.dev/blog/ultimate-guide-to-validate-and-sanitize-http-requests-in-laravel
[3] https://spatie.be/docs/laravel-data/v4/validation/using-validation-attributes
[4] https://spatie.be/docs/laravel-data/v4/validation/introduction
[5] https://escape.tech/blog/laravel-sql-nection-guide/
[6] https://www.youtube.com/watch?v=SW1DDJ5PCAM
[7] https://github.com/spatie/laravel-data/discussions/470
[8] https://stackoverflow.com/questions/72186973/checking-for-user-permissions-with-spatie-package-fails-in-routes-and-in-control
[9] https://spatie.be/docs/laravel-model-states/v2/request-validation/01-state-validation-rule