Il pacchetto Spatie gestisce la convalida dell'input dell'utente principalmente attraverso una serie di regole di convalida di Laravel personalizzate e l'integrazione con il sistema di convalida di Laravel, fornendo un approccio strutturato ed estensibile alla convalida dei dati prima che vengano elaborati o salvati.
Gestione della convalida nei pacchetti spatie
Regole di convalida personalizzate
Spatie offre una raccolta di utili regole di convalida che estendono le capacità di validazione native di Laravel. Queste regole possono essere utilizzate nelle richieste di forma Laravel o direttamente nella logica di convalida del controller. Esempi includono:- Regola autorizzata: convalida se l'utente loggato è autorizzato a eseguire un'azione specifica su un'istanza del modello controllando le politiche, come corrispondenti ID utente [1].
- Regola di valuta: convalida se un determinato input è un codice di valuta valido, supportando gli standard ISO 3166 [1].
- Regola enum: convalida che il valore di input appartiene a un set predefinito di valori ENUM, utile per dati fortemente tipizzati [1].
- Regola di modelli: verifica se tutti i valori in un array esistono come attributi in un modello specificato, garantendo l'integrità referenziale [1].
- Regola delimitata: convalida stringhe contenenti valori delimitati (ad es. Email separate da virgole), comprese le opzioni per impostare articoli minimi/massimi, consentire duplicati e personalizzare i separatori [1].
Queste regole si integrano perfettamente con il sistema di validazione di Laravel, consentendo agli sviluppatori di definirle nel metodo "Regole () di richieste di modulo o array di validazione in linea.
Convalida nel pacchetto di dati Spatie Laravel
Il pacchetto di dati Spatie Laravel migliora la convalida convalidando i dati prima di creare oggetti dati. La convalida si verifica automaticamente quando:- Iniezione di un oggetto dati da una richiesta.
- Chiamare il metodo `da` su un oggetto dati con dati di richiesta.
È inoltre possibile attivare manualmente la validazione tramite metodi come `Convalida ()` o `validateAndCreate ()`. Il pacchetto supporta la configurazione di strategie di convalida, come sempre convalida o disabilitazione del tutto, fornendo il controllo a grana fine su quando si verifica la convalida [4].
Convalida in due fasi
Spatie sta esplorando un approccio di convalida in due fasi in cui:- Il primo passo applica le regole di base per garantire che la struttura dei dati sia solida e impedisca errori PHP.
- Il secondo passo applica regole di convalida più complesse.
Questo approccio può migliorare la robustezza prendendo in anticipo errori e fornendo un feedback di convalida più chiara [7].
sanitizzazione
Mentre i pacchetti di Spatie si concentrano principalmente sulla convalida, Laravel gestisce la sanificazione implicitamente attraverso la convalida e il legame dei dati. Ad esempio, le richieste di modulo di Laravel sanitizzano automaticamente gli input convalidando e filtrando i dati prima che vengano utilizzati nell'applicazione. Le regole di convalida di Spatie completano ciò garantendo che i dati siano conformi a specifiche regole o formati aziendali.Gli sviluppatori possono estendere la sanificazione creando attributi di convalida personalizzati o sanificando manualmente gli input prima o dopo la convalida, se necessario [3].
Riepilogo
- Spatie fornisce una serie ricca di regole di convalida di Laravel per scenari di validazione comuni e complessi, come controlli di autorizzazione, convalida ENUM, controlli di esistenza e convalida dell'input delimitato [1].- Il pacchetto di dati Laravel di Spatie convalida i dati prima della creazione di oggetti, con opzioni per la convalida manuale o automatica e le strategie di convalida configurabile [4].
- Viene sviluppato un processo di validazione in due fasi per migliorare la robustezza della convalida [7].
- La sanificazione è generalmente gestita dai meccanismi di convalida e gestione degli input di Laravel, con gli strumenti di Spatie che si concentrano sulla correttezza e l'estensibilità della convalida [3].
Questo approccio garantisce che l'input dell'utente sia rigorosamente validato in base alle regole specifiche dell'applicazione prima di elaborare, ridurre gli errori e migliorare la sicurezza.
Citazioni:
[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-iniection-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