Modele etat des lieux d`entrée

19 febrero



Plus tôt aujourd`hui, nous avons commis une modification de MVC 2 qui a converti le système de validation de validation d`entrée en validation de modèle. La propriété values du ModelStateDictionary contient des instances de type System. Web. Mvc. ModelState. Qu`est-ce qu`un ModelState contient réellement? Les États peuvent approuver des organismes certificateurs ou approuver des examens de certification individuels. Certains États s`en remettent aux organismes qui accrédite les organismes de certification. Ils peuvent faire référence à la Commission nationale des organismes de certification et/ou au Conseil américain des spécialités infirmières. Il y a encore deux propriétés importantes dont nous n`avons pas discuté, cependant: la propriété ModelState.

Errors et la propriété ModelStateDictionary. IsValid. Ils sont utilisés pour la deuxième fonction de ModelState: pour stocker les erreurs trouvées dans les valeurs envoyées. Le ModelState représente une collection de paires nom et valeur qui ont été envoyées au serveur pendant un POST. Il contient également une collection de messages d`erreur pour chaque valeur soumise. En dépit de son nom, il ne sait pas réellement quoi que ce soit sur les classes de modèle, il a seulement des noms, des valeurs et des erreurs. ModelState est une propriété d`un contrôleur et peut être accédé à partir de ces classes qui héritent de System. Web. Mvc.

Controller. Brad Wilson blog post “validation d`entrée vs modèle de validation dans ASP.NET MVC” a une bonne discussion sur la sous-signalisation et sur-affichage. Bien que le message soit à propos de ASP.NET MVC 2, les problèmes sont toujours pertinents pour l`API Web. Après l`obtention du diplôme, l`infirmière cherchera la certification nationale. Il existe plusieurs organismes certificateurs. Chaque État choisit les organisations et/ou certifications qu`il acceptera. Cependant, il y a des organisations nationales que les conseils d`État regardent souvent lorsqu`ils prennent des décisions. La NCSBN a des critères rigoureux en place pour l`acceptation; la NCSBN est si influente que les organismes de certification eux-mêmes font des changements pour s`aligner sur le modèle de consensus de l`APRN. Voyons ce qui se passe lorsque nous essayons de soumettre un POST non valide qui manque l`adresse e-mail. Lorsque nous obtenons l`action POST pendant le débogage, nous avons les valeurs suivantes dans notre ModelStateDictionary: lorsque votre objet contact est lié à un modèle, nous exécuterons automatiquement la validation.

Cela a été vrai dans ASP.NET MVC 1,0 ainsi, bien que nous n`ayons pas un système de validation enfichable afin que la plupart des gens ne savaient même pas que nous avions un support de validation. La classe DefaultModelBinder possédait des crochets de validation ainsi qu`une prise en charge intégrée de IDataErrorInfo pour la validation. Les États ont fixé des exigences mineures supplémentaires qui doivent être remplies avant d`obtenir un permis. Certains, par exemple, nécessitent des vérifications d`arrière-plan basées sur des empreintes digitales, même de ceux qui ont déjà effacé les vérifications en arrière-plan au niveau RN. Il y a un changement de rupture ici de MVC 1,0 et l`attribut [Bind]. Auparavant, nous n`avons validé que les choses auxquelles nous avons lié les valeurs, de sorte que l`exclusion d`une propriété avec [Bind] a également veillé à ce que les validateurs de cette propriété ne s`exécutent pas. Dans MVC 2 RTM, puisque nous avons changé à la validation de modèle, ces validateurs seront exécutés maintenant, même s`il n`est pas possible de lier des valeurs dans le modèle. Alors que le système permet encore l`édition partielle, vous ne pouvez plus obtenir une validation partielle comme vous pourriez en 1,0 (ou dans les premiers aperçus MVC 2). Notez que l`instance de ModelState pour l`adresse de messagerie a maintenant une erreur dans la collection Errors. Lorsque MVC crée l`état du modèle pour les propriétés soumises, il passe également par chaque propriété dans le ViewModel et valide la propriété à l`aide des attributs qui lui sont associés. Si des erreurs sont trouvées, elles sont ajoutées à la collection Errors dans le ModelState de la propriété.

Compte tenu de ce nouveau comportement, pouvons-nous considérer l`attribut [required] une fonctionnalité de sécurité maintenant? La réponse est, malheureusement, toujours non. Même avec la validation de modèle au lieu de validation d`entrée, nous avons toujours les mêmes problèmes de sécurité potentiellement non adressés que nous avons toujours eu: «sous-affichage» et «sur-affichage». Le passage à la validation du modèle peut faciliter l`adressage «sous-affichage» dans certains scénarios, mais nous ne sommes en aucun cas totalement sûrs pour le moment.