Shailesh Shekhawat

face

De ce avem nevoie de validare pe partea de server?

  • Validarea clientului dvs. nu este suficientă și poate fi subversată
  • Mai predispus la Man în atacuri medii, iar serverul nu ar trebui să aibă niciodată încredere în partea clientului
  • Un utilizator poate dezactiva validarea JavaScript pe partea de client și manipula datele

Dacă ați construit aplicații web utilizând un cadru Express sau orice alt cadru Node.js, validarea joacă un rol crucial în orice aplicație web care necesită validarea interogării parametrului corpului de solicitare .

Scrierea propriei funcții middleware poate fi greoaie dacă

  • doriți să vă deplasați rapid, menținând în același timp calitatea codului sau
  • doriți să evitați utilizarea dacă (cer.corp.cap) sau dacă (cer.params.isCool) în funcția principală de controler în care definiți logica de afaceri

În acest tutorial, veți afla cum să validați intrările într-o aplicație Express.js utilizând un modul open source și popular numit express-validator.

Introducere în expres-validator

Definiția de pe Github spune:

Modulul implementează cinci API-uri importante:

  • Verificați API
  • API filtru
  • API lanț de igienizare
  • API lanț de validare
  • API rezultat validare

Să aruncăm o privire la o rută de bază a utilizatorului fără niciun modul de validare pentru a crea un utilizator: /route/user.js

Acum în user controller /controllers/user.js

Codul de mai sus este doar un exemplu de bază de validare a câmpurilor pe cont propriu.

Puteți gestiona unele validări în modelul dvs. de utilizator utilizând Mongoose. Pentru cele mai bune practici, dorim să ne asigurăm că validarea are loc înainte de logica afacerii.

validatorul expres se va ocupa de toate aceste validări și de igienizarea intrărilor.

Instalare

Include modul în fișierul principal server.js:

Acum, utilizând expres-validator, /routes/user.js va fi astfel:

Aici userController.validate este o funcție middleware care este explicată mai jos. Acceptă numele metodei pentru care va fi utilizată validarea.

Să creăm o funcție middleware validate () în /controllers/user.js:

Vă rugăm să consultați acest articol pentru a afla mai multe despre definirea funcției și utilizarea acesteia.

Funcția corpului va valida doar req.body și ia două argumente. Mai întâi este numele proprietății. Al doilea este mesajul dvs. personalizat care va fi afișat în cazul în care validarea eșuează. Dacă nu furnizați un mesaj personalizat, atunci va fi utilizat mesajul implicit.

După cum puteți vedea, pentru un câmp obligatoriu folosim metoda .exists (). Folosim .optional () pentru un câmp opțional. În mod similar, isEmail () isInt () este utilizat pentru validarea e-mailului și a numărului întreg .

Dacă doriți ca un câmp de introducere să includă numai anumite valori, atunci puteți utiliza .isIn ([]). Aceasta necesită o serie de valori și, dacă primiți alte valori decât cele de mai sus, atunci va fi aruncată o eroare.

De exemplu, câmpul de stare din fragmentul de cod de mai sus poate avea doar o valoare activată sau dezactivată. Dacă furnizați altă valoare decât aceasta, va fi aruncată o eroare.

În /controllers/user.js să scriem un creaza utilizator funcție în care puteți scrie logică de afaceri. Va fi chemat după validate () cu rezultatul validărilor.

Dacă vă întrebați ce este validationResult (req)?

Această funcție găsește erorile de validare în această solicitare și le înfășoară într-un obiect cu funcții utile

Acum, ori de câte ori solicitarea include parametri de corp nevalizi sau câmpul UserName lipsește în req.body, serverul dvs. va răspunde astfel:

Deci, dacă userName sau e-mail nu a reușit să satisfacă validarea, fiecare eroare returnată prin metoda .array () are următorul format în mod implicit:

După cum puteți vedea, acest modul ne ajută cu adevărat să avem grijă de majoritatea validărilor de unul singur. Păstrează și calitatea codului și se concentrează în principal pe logica afacerii.

Aceasta a fost introducerea la validarea intrărilor folosind expres-validator modul și verificați cum să validați o matrice a articolului și să vă faceți propria validare personalizată în partea 2 a acestei serii.

Am încercat din răsputeri și sper că am acoperit suficient cât să-l explic în detaliu, astfel încât să puteți începe.

Dacă întâmpinați probleme, nu ezitați să luați legătura sau să comentați mai jos.
Aș fi bucuros să vă ajut:)

Urmăriți-l pe Shailesh Shekhawat pentru a primi o notificare ori de câte ori public o nouă postare.

Nu ezitați să bateți din palme dacă ați considerat că este o lectură utilă!

Publicat inițial la 101node.io pe 2 septembrie 2018.

Shailesh Shekhawat

Dezvoltator senior NodeJS ★ Full Stack | ReactJS ★ Author @ 101node.io ★ Un rezolvator de probleme, utilizator Linux/Mac, care se bucură de matematică și logică.

Dacă ați citit până aici, trimiteți un tweet către autor pentru a le arăta că vă pasă. Trimite o mulțumire

Învață să codezi gratuit. Curriculum-ul open source freeCodeCamp a ajutat peste 40.000 de persoane să obțină locuri de muncă ca dezvoltatori. Incepe

freeCodeCamp este o organizație nonprofit 501 (c) (3) scutită de impozite, susținută de donatori (numărul de identificare fiscală federal al Statelor Unite: 82-0779546)

Misiunea noastră: să ajutăm oamenii să învețe să codeze gratuit. Realizăm acest lucru creând mii de videoclipuri, articole și lecții interactive de codare - toate disponibile gratuit publicului. De asemenea, avem mii de grupuri de studiu freeCodeCamp din întreaga lume.

Donațiile către freeCodeCamp se îndreaptă către inițiativele noastre de educație și ajută la plata pentru servere, servicii și personal.