ASP. NET Core - Les bases de l'authentification et de l'autorisation | Trevoir Williams | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

ASP. NET Core - Les bases de l'authentification et de l'autorisation

teacher avatar Trevoir Williams, Jamaican Software Engineer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      2:03

    • 2.

      Mettre en place un projet de publicité classifiée

      8:53

    • 3.

      Ajouter l'authentification par cookie au projet Web

      14:33

    • 4.

      Ajouter des fonctionnalités d'ouverture de session et de fermeture de session

      17:17

    • 5.

      Explorer les revendications d'identité et le principal

      9:29

    • 6.

      Explorer les revendications d'identité et le principal

      13:28

    • 7.

      Revue de section

      3:05

    • 8.

      Qu'est-ce que le noyau d'identification

      14:06

    • 9.

      Ajouter de l'identité au projet existant

      16:55

    • 10.

      Mettre en œuvre l'inscription sécurisée - Partie 1

      9:40

    • 11.

      Mettre en œuvre l'inscription sécurisée - Partie 2

      16:35

    • 12.

      Implémenter la vérification des e-mails pour l'inscription

      9:17

    • 13.

      Envisager des mots d'épée supplémentaires

      9:45

    • 14.

      Les bases de l'inscription - Revue de section

      5:10

    • 15.

      Les bases de l'identification - Aperçu de la section

      0:31

    • 16.

      Implémenter la fonctionnalité Login

      17:13

    • 17.

      Gérer le flux de fermeture de session

      2:33

    • 18.

      Implémenter la fonctionnalité de réinitialisation des mots de passe

      8:20

    • 19.

      Mettre en œuvre le verrouillage de compte

      7:02

    • 20.

      Implémenter l'authentification à deux facteurs

      9:45

    • 21.

      Revue de section

      3:07

    • 22.

      Aperçu de la section

      2:00

    • 23.

      Mettre en œuvre l'autorisation de base

      9:07

    • 24.

      Ajouter des rôles aux utilisateurs

      16:55

    • 25.

      Mettre en œuvre l'autorisation basée sur les rôles

      9:28

    • 26.

      Ajouter des revendications personnalisées aux utilisateurs

      16:20

    • 27.

      Accédez aux réclamations dans l'application

      7:25

    • 28.

      Mettre en œuvre l'autorisation basée sur les politiques

      9:16

    • 29.

      Examen de section - Réclamations et rôles

      2:33

    • 30.

      Aperçu de la section - Qu'est-ce qu'OpenIdContenir

      2:13

    • 31.

      Inscrivez-vous aux informations d'identification Google OAuth

      1:50

    • 32.

      Ajouter Google Auth à l'application

      5:24

    • 33.

      Tester le flux d'ouverture de session Google Auth

      4:40

    • 34.

      Examen de section OAuth

      2:58

    • 35.

      Conclusion

      1:43

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

129

apprenants

1

projets

À propos de ce cours

Présentation générale

Dans ce cours, vous apprendrez les bases de l'authentification moderne à l'aide de la bibliothèque d'identités ASP.NET et apprendrez à étendre les fonctionnalités en fonction de nos besoins spécifiques à l'entreprise. Bien qu'il soit impossible d'obtenir une sécurité parfaite, nous explorerons une variété de techniques qui vont loin pour assurer simultanément la sécurité et la facilité d'utilisation. Nous allons voir comment mettre en œuvre la sécurité dans une application ASP.NET Core et comment mettre en œuvre l'autorisation basée sur les rôles, les revendications et les politiques personnalisées.

Pourquoi ASP.NET Identity Core

Autorisation, authentification et gestion des utilisateurs sont les principales fonctionnalités des applications réelles. Identity Core est la bibliothèque phare emballée avec les projets ASP.NET Core pour nous aider à tirer le meilleur parti de la sécurité possible. Faire en sorte que l'authentification et l'autorisation soient effectuées directement sur votre site Web peut aider vos utilisateurs et leurs données à l'abri des attaques. Les fonctionnalités ajoutées telles que l'authentification à deux et l'authentification multifacteur sont relativement faciles à intégrer et cette bibliothèque peut facilement être étendue pour mettre en œuvre des règles de gestion uniques pour entourer la façon dont les utilisateurs sont traités.

Créer des bases solides dans ASP.NET Core Security :

  • Apprendre à ajouter l'authentification par cookie manuellement à une application ASP.NET Core

  • Comment mettre en œuvre correctement les rôles des utilisateurs, les réclamations et les politiques

  • Apprendre à utiliser, créer et gérer les réclamations d'utilisateurs

  • Apprendre à mettre en œuvre correctement un processus d'authentification et d'inscription des utilisateurs

  • Apprendre à utiliser les politiques de mots en mouvement et à récupérer

  • Apprendre à paramétrer les fonctions d'e-mail pour sécuriser les processus de validation de compte, de mot de passe oublié et d'autres processus

  • Apprendre à ajouter des restrictions d'autorisation et d'utilisateur

  • Apprendre à ajouter l'authentification à deux facteurs et à plusieurs facteurs

  • Apprendre les méthodes d'authentification modernes (logins sociaux, OAuth, etc.)

Même si les bases des principes de sécurité seront démontrées avec une application Razor Pages, toutes les techniques et tous les aspects peuvent être pris en compte dans n'importe quel type d'application ASP.NET Core, y compris MVC et Blazor. 

Il est destiné aux développeurs à tous les niveaux car il n'est jamais trop tard ou tôt pour commencer à réfléchir aux meilleures pratiques de sécurité pour votre application Web.

Contenu et aperçu

Pour suivre ce cours, vous devrez avoir quelques notions de ce qui est en cours. Développement NET Core et C #.

Ce cours comporte un peu plus de 5 heures de contenu premium, qui sont intelligemment divisées pour mettre en évidence un ensemble d'activités liées en fonction de chaque module dans l'application en cours de création. Nous nous pencherons également sur le dépannage et le débogage des erreurs au fur et à mesure ; mettre en œuvre les meilleures pratiques ; écrire une logique efficace et comprendre pourquoi les développeurs font les choses comme ils le font. Votre expérience va évoluer étape par étape tout au long du cours et vous serez mis au défi d'être le meilleur possible.

Nous ne faisons pas toujours les choses de manière parfaite la première fois ; ce n'est pas la réalité d'écrire du code. Nous faisons des erreurs et nous les signalons et les corrigeons autour d'elles. Ce faisant, nous développons nos compétences en utilisant les outils et les techniques de débogage. Lorsque vous aurez terminé le cours, vous aurez bougé dans Visual Studio et aurez tellement examiné les erreurs de logique et de syntaxe que ce sera la deuxième nature pour vous lorsque vous travaillerez dans le monde de l'informatique. Environnement NET. Cela mettra vos nouvelles compétences acquises en pratique et impressionnera votre patron et vos collègues de travail.

Le cours est complet avec les fichiers de travail hébergés sur GitHub, avec l'inclusion de certains fichiers pour vous faciliter la réplication du code en cours de démonstration. Vous serez en mesure de travailler aux côtés de l'auteur pendant que vous travaillez sur chaque cours et recevrez un certificat d'achèvement vérifiable à la fin du cours.

Rencontrez votre enseignant·e

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Enseignant·e
Level: All Levels

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Bonjour et bienvenue dans mon nouveau cours est pour vous dotnet Core identité, authentification et autorisation Essentials. Je suis votre instructeur pour Var Williams. Je suis ingénieur logiciel et je donne des conférences depuis plus de 10 ans. Et avec ce cours, j'espère vous apprendre tous les fondamentaux et les éléments essentiels de la sécurisation de votre application ESP dotnet core à l'aide de la bibliothèque phare, Identity Core. Ainsi, sur les choses que vous apprenez, vous apprenez comment construire une base solide dans ASP.Net Core Security, vous apprenez comment implémenter l'authentification par cookie Manuel est et maintenu pour gérer les réclamations inscrite dans votre application, vous apprenez comment configurer un travail de connexion et de redistribution sécurisés pour vos utilisateurs tout en conservant une facilité d'utilisation. Nous allons également configurer diverses fonctionnalités tierces telles que la messagerie électronique, et nous examinerons comment implémenter l'authentification à deux facteurs. Nous avons examiné comment intégrer les connexions sociales comme Google et Facebook sur Twitter, toutes ces choses, tout dans ce cours. Et tout ce que nous ne ferons pas dans ce cours sont détruits par l'apprentissage, c'est le développement de b.net. Et nous ne nous perdrons pas en regardant diverses fonctionnalités et en essayant de construire un grand projet. Au lieu de cela, nous nous concentrerons sur un petit projet et j'enverrai ciblé ce que nous utiliserons pour explorer les tenants et aboutissants de la bibliothèque d'identités. Nous avons appris à sécuriser n'importe quelle application Dotnet Core, quelle que soit sa taille ou sa petite raison des principes fondamentaux de l'authentification et de l'autorisation que nous allons explorer. Vous aurez également besoin d'expérience en programmation dans Dotnet Core avec C-Sharp ainsi que de comprendre comment fonctionne Entity Framework. Encore une fois, nous n'allons pas explorer toutes ces choses. J'ai d'autres cours pour ces choses spécifiques. Donc, dans ce cours, nous examinons l'identité Dotnet Core. Donc, avec tout ce qui est dit et fait, voyons comment nous pouvons mettre en œuvre la meilleure sécurité possible pour notre application Dotnet Core. voit bientôt. 2. Configurer un projet de publicité classée: Hé les gars, bienvenue. Dans cette leçon, nous prendrons un certain temps pour comprendre les projets avec lesquels nous commençons. Ils ne vont pas commencer à partir de zéro parce que ce cours suppose que vous avez déjà quelques connaissances fondamentales en est la vitesse sur un noyau et Entity Framework Core. Et si vous ne le faites pas, je vous recommande de consulter l'un de mes cours précédents comme complete est la vitesse sur un noyau et Entity Framework Development. Ou mes cours sur Entity Framework, si c'est là que vous devez affiner vos compétences. Mais pour ce cours, nous nous concentrons sur la sécurité. Donc, ces sujets fondamentaux sont déjà supposés et le projet est déjà créé. Ainsi, vous pouvez accéder à ce projet en suivant le lien qui est déjà partagé avec vous. Ou vous pouvez simplement aller à mon profil GitHub et chercher un classificateur. Et il fait que c'était la sécurité de l'identité et ça devrait apparaître comme l'un des projets si vous voulez prendre cette route. Maintenant, tout ce que vous avez vraiment à faire pour obtenir ce projet sur votre machine, si vous n'êtes pas nécessairement familier avec le processus, est de simplement frapper le code et vous serez en mesure d'ouvrir avec Visual Studio. À ce moment-là. Visual Studio vous permettra de cloner cet outil n'importe quel dossier de votre ordinateur. Et puis vous serez en mesure d'ouvrir cette solution. Donc je vais juste le démontrer rapidement. Si je choisis cette option, ouvrez avec Visual Studio, alors il est dit, où voulez-vous le cloner ? Et puis je peux juste sélectionner le chemin. Je vais le laisser comme rationnel par défaut. Au lieu de cela, je vais juste mettre quelque chose pour qu'il ne soit pas en conflit avec mon code existant. Et puis appuyez sur Clone. Et une fois que cela est fait, vous serez en mesure de double-cliquer sur ce fichier de solution et d'ouvrir la solution sur votre ordinateur. Maintenant, lorsque cette solution est ouverte dans l'Explorateur de solutions et que vous marquez moins à gauche, la vôtre peut être à droite. Cependant, votre configuration de Visual Studio, il n'a pas vraiment d'importance que vous devriez voir quelque chose. On peut laisser ça. Vous verrez donc que nous avons deux projets. Nous avons un projet de données, et nous avons un projet web. Non, le projet de données héberge des éléments de base comme la configuration des entités, la migration jusqu'à présent pour la base de données et les contextes de base de données réels. Encore une fois, si quelque chose que je viens de dire ne vous est pas familier, au moins 80 % de ce que je viens de dire devrait vous être familier. Si ce n'est pas le cas, je vous recommande de consulter l'un des cours précédents que j'ai sur les développements de base ASP.Net. Très bien, donc pour cette partie du projet, tout est déjà branché avec toutes les références et ainsi de suite. Au moment de suivre ce cours, vous pourriez être invité à mettre à jour quelques paquets NuGet. C'est très bien. heure actuelle, tout est construit avec dotnet five, donc il est rétrocompatible et généralement compatible vers l'avant. Mais tout ce que nous faisons ici sera compatible avec la prochaine version de dotnet. Donc, vous n'avez pas trop à vous soucier d'être toute la portée de la dernière technologie. Donc, dans notre contexte de base de données, nous faisons référence à deux tables et c'est une application très simple. Comme je l'ai dit, nous voulons vraiment juste une application où nous allons appliquer préoccupations de sécurité et la mettre en place et regarder comment l'identité fonctionne en général et nous aider à sécuriser ou site Web. Donc nous avons deux tables, une pour les catégories sur 14, les publicités, non ? J' applique les configurations qui sont appelées dans le dossier de configuration, respectivement pour la publicité et quatre catégories. Donc, fondamentalement, ce sont juste ensemencer quelques données dans la base de données. Bon, donc c'est tout ce qui se passe vraiment là-bas. Et puis la migration est déjà créée. Donc déjà créé cette migration initiale où il crée la table des catégories et la publicité reste avec des ensembles de cette relation de clé étrangère entre les deux. Et puis il va de l'avant et insère ces données prédéfinies. C' est donc notre projet de données. Sachez vraiment que le projet web est à peu près où l'interface utilisateur sera assis comme nous le savons déjà. Dans cette situation, j'utilise des pages Razor. Donc, avec dotnet core, vous avez l'option de pages Razor de MVC. Et vous avez également la possibilité d'utiliser un blazer. Connaissez les principes fondamentaux de ce que nous discuterons en termes d'ajout d'identité à un projet et de sécurisation de votre projet. Tous ces principes fondamentaux de sécurité peuvent être utilisés générale avec n'importe lequel de ces modèles de projet. Donc, alors que nous pouvons utiliser des pages Razor, si vous avez une application MVC ou un blazer en utilisant l'IRR, il peut toujours jouer la plupart, sinon tous, de ces problèmes de sécurité en conséquence. Très bien, donc dans l'application web, les choses de configuration simples sont là. Nous avons la chaîne de connexion qui va générer une base de données, ou elle pointe vers une base de données qui devrait être sur le serveur DB local, qui vient avec Resolve Studio. Nous avons la base de données appelée petites annonces dB, et nous lui avons donné un peu de sécurité. Vous pouvez y apporter des modifications si vous le souhaitez. Donc, si vous ne le voulez pas déjà sur ce serveur particulier, ne voulez pas qu'il soit appelé cela sans problème. Allez-y et ajustez ça. J' ai déjà échafaudé les publicités sur les pages et catégories. D' accord, donc nous avons toutes les pages en cours ici. Et encore une fois, c'est une sécurité que le point focal de ce cours est la sécurité. Donc, je ne vais pas partir et commencer à abstraire et avoir des dépôts et ainsi de suite. Nous avons tous les cours qui vont en profondeur dans tout ça, non ? Donc, je garde cela très simple possible pour les choses qui n'ont pas vraiment d'importance dans le contexte de ce cours. Donc, vous verrez que j'injecte directement le contexte. J' ai juste éraflé tout ici à partir de zéro. Je n'utilise aucune obstruction ou injection de dépendance avancée ou quoi que ce soit du genre. Je veux juste quelque chose qui marche. D'accord. Donc simplement, je suis tout hors de la boîte de code ici, à moins de quelques modifications. Comme pour les publicités, le code par défaut aurait eu un ID, un ID ici pour la liste déroulante, j'ai un ID et un nom, sorte qu'un nom s'affiche sur un chroniqueur de drogue, n'est-ce pas ? De même dans les détails, nous aurions eu l'ID de point de catégorie ici. J' ai changé cela pour avoir besoin à des fins d'affichage. Et similaire à la création pour l'édition. Encore une fois, nous avons ID et nom pour la liste déroulante. Maintenant, en plus de tout cela, j'ai déjà configuré la page de mise en page pour avoir les liens de navigation supplémentaires vers la publicité et les pages de catégories. Donc, une fois de plus, tout cela est fait pour vous. Donc, nous avons une bonne plate-forme de lancement parce que je suppose déjà que vous savez comment construire une application ASP.NET Core, ou nous nous concentrons sur la sécurité. Donc, pour obtenir cela entièrement installé ou se contenter de la médiocrité du code source. L' étape suivante serait juste de le laisser créer cette base de données. Donc, que vous modifiiez ou non la chaîne de connexion, vous devez aller à la console Package Manager, qui si ce n'est pas sur ce à la section de votre écran, vous pouvez toujours aller à Tools NuGet gestionnaire de paquets et obtenir ce moniteur console. Et puis tout ce que vous devez faire est de mettre à jour la base de données. Une fois que vous faites cela, il générera cette base de données pour vous avec les données par défaut. Et puis vous pouvez toujours juste, vous savez, si vous cliquez, appuyez sur F5, vous cliquez sur Exécuter ou utilisez le Contrôle F5 pour passer en mode non rétrogradé, vous obtiendrez le web, l'application web, désolé, lancer. D' accord, donc encore une fois, je n'ai rien fait de spécial avec le projet, sauf que j'ai éraflé les nouvelles pages. Donc, ici, si vous appuyez sur les annonces, vous voyez les données prédéfinies par défaut dans leurs catégories. Tu verras la même chose, non ? J' ai ajouté un peu de formatage à la page de détails pour le prix, mais il ne s'est pas souvenu de le faire ici pour la page d'index. Donc je veux dire, si vous voulez, vous pouvez le personnaliser comme vous le souhaitez. Mais pour le noeud c'est ce que j'ai si peu de J et pourrait juste être que vous, vous modifiez le formatage ici, et vous changez aussi la catégorie, afficher pour ne pas être le nom d'ID comme ce que nous avons dans les détails, n'est-ce pas ? Lequel à ce moment pour vous devrait être des correctifs faciles, non ? Donc, quand nous reviendrons, nous allons examiner le premier ensemble de configurations que nous devons ajouter pour obtenir l'identité ajoutée ou l'authentification plutôt ajoutée à notre projet. Nous allons donc configurer l'authentification des cookies quand nous reviendrons. 3. Ajouter de l'authentification des cookies à le projet Web: Bon, bienvenue les gars. Donc, dans cette leçon, nous allons ajouter l'authentification des cookies à notre application. La dernière fois, un faux pas de Candida. Et j'ai dit, nous allons ajouter de l'identité. Et puis je me suis corrigé pour dire cookies. Donc, l'identité est la bibliothèque que Microsoft utilise pour gérer l'autorisation d'authentification sur tous ces éléments de sécurité. Mais ils nous permettent de faire nos propres choses. Donc, avant d'aller dans les bibliothèques fournies par Microsoft, je veux que vous appréciiez quelles sont les options parce que vous pourriez juste être entonnoir nécessaire où vous ne voulez pas compter sur la bibliothèque Microsoft. Vous voudrez peut-être faire votre propre chose et l'authentification des cookies est disponible, ou vous avez réellement la possibilité d'ajouter votre propre type d'authentification avec leur propre type d'authentification sur le schéma indépendant de l'identité, une bibliothèque ou non, au cas où vous n'êtes pas si clair sur ce qu'est un cookie, je suis sûr que vous avez vu quelque chose à propos d'un cookie et tout votre traversant l'Internet que vous voyez la plupart du temps dans l'ancien, voulez-vous accepter tous les cookies et toutes sortes de cookies politiques et ainsi de suite partout sur Internet. Donc essentiellement un cookie est fondamentalement un fichier de données qui est dépassé entre votre ordinateur et un serveur. Et il vous identifie de manière unique en tant qu'utilisateur et votre ordinateur en tant que client. Et chaque fois que vous essayez de faire quelque chose sur notre site Web, ces informations de cookie vous concernant et votre ordinateur seront partagées avec le serveur. Et puis le serveur peut prendre une décision quant à savoir si oui ou non manger devrait vous montrer quelque chose. Oui, il y a des problèmes de sécurité à l'utilisation de l'authentification par cookie en général. Mais alors, je veux dire, vous pouvez faire tout ce que vous pouvez pour aider à sécuriser votre application. Et tout. Le fait est que vous devrez toujours trouver un équilibre entre la facilité d'utilisation et la sécurité. Parce que plus vous mettez en place de sécurité, moins la facilité d'utilisation est pour certains utilisateurs. Et parfois un utilisateur plus, l'utilisateur pour une élite est, est un moins sécurisé. Donc, c'est un équilibre sain que vous devez certainement évaluer assez de cela. Allons dans la façon dont nous ajouterions l'authentification et, par extension, l'authentification par cookie à notre application Web telle qu'elle est. Donc, à l'intérieur de notre fichier CSS startup.js, je vais ajouter cette option. Juste en dessous du point de services, ajoutez des pages Razor. Je voulais voir Services penser Authentification AD. Donc, je peux juste dire ajouter l'authentification. Et cela signifierait que je veux que les utilisateurs aient à s'identifier. Donc, il y a peu de regard sur l'authentification par rapport à l'autorisation. L' authentification signifie vous identifier afin que je sais qui vous êtes ce moment, nous avons vu qu'un allèle spécifique voudrait l'authentification par cookie. Donc, à l'intérieur de cette méthode, il y a, il y a quelques surcharges. Donc, une version overlord R1 a des paramètres NT. Un autre me permet d'insérer le schéma par défaut. Et il y a peu sur, me permet de mettre des options. Donc, je vais utiliser celui où je peux juste mettre dans le schéma par défaut. Donc, le schéma par défaut pour les cookies serait fondamentalement les cookies de chaîne, d'accord, avec des outils. Mais alors, vous savez, parfois vous ne voulez pas taper dans la chaîne magique à l'aquarelle, donc ils nous donnent une constante ou une constante statique, je vais quelque chose comme cookie off et elle a vu sur la faute. Et si je contrôle juste les points, vous voyez avec l'instruction using pour cela. Donc, l'authentification des cookies par défaut point et puis je schéma d'authentification sans fin. Et cela ramènera ces cookies de chaîne. D'accord ? Donc, je peux utiliser cela pour le coffre-fort de compilation à tout moment, ainsi que me débarrasser de cette chaîne magique. En plus de cela, je voudrais ajouter, littéralement ajouter des cookies. Donc, si vous regardez ce que cette méthode fait, il voit qu'elle ajoute l'authentification des cookies à un constructeur ASP.NET Core Authentication en utilisant le schéma de thème spécifié, désolé, droit, Donc, l'authentification des cookies utilise problème pour être assistée dans le client pour effectuer l'authentification. Donc c'est beaucoup d'informations juste là. C' est tout un tutoriel juste là dans l'extrait IntelliSense. Donc, je peux juste ajouter des cookies. Et entre ces deux lignes, nous savons, savons, savons, que notre application est capable d'authentifier les cookies. Maintenant, ce que nous devons faire est de faire savoir au middleware qu'il doit charger les bibliothèques et les capacités pour avoir notre authentification et tout ce qui est fait. Donc, si nous faisons défiler un peu vers le bas jusqu'à la configuration, qui est où tous les middlewares sont vraiment ajoutés. Vous verrez que nous avons déjà des autorisations. Autorisation, autorisation d'utilisation est standard avec fondamentalement n'importe quel modèle d'application dotnet Core. Mais ce que nous voulons faire est d'ajouter l'authentification juste au-dessus, n'est-ce pas ? Donc tu peux juste dire. Dot ajouter l'authentification ou désolé, utiliser l'authentification et mes fesses. Utiliser l'authentification juste au-dessus de l'autorisation américaine. Et je vais entre ces deux lignes, notre application, nous verrons, eh bien, si quelque chose est protégé, alors j'ai besoin de voir notre cookie. Si je ne vois pas de cookie, utilisez les identifiants. Donc, c'est ce que l'authentification sur SES, identifier qui vous êtes. L' autorisation dit, pouvez-vous le faire ou non ? Donc, après avoir identifié qui vous utilisez, l' imposteur ou quoi que ce soit, vous avez identifié qui vous êtes, n'est-ce pas ? Pouvez-vous réellement effectuer cette action ou non ? C' est ce que voit l'autorisation. Donc, pour invoquer l'autorisation et ce que je vais faire pour accélérer cela est sur notre index pour les publicités, n'est-ce pas ? Ou pas ou limité sur les catégories. Cela rend un peu plus logique que vous voudriez prédire la liste des catégories et la capacité d'augmenter la liste des catégories, alors ce serait de prédire les publicités. Bien sûr, différentes règles commerciales ont des exigences différentes. Donc je ne dis pas que c'est comme ça que ça devrait être basé sur vos contextes, vous prenez votre décision, non ? Mais si nous voulions restreindre l'accès à la liste des catégories, accord, donc si vous exécutez cette application maintenant, vous pouvez suspendre l'exécution de l'application. Vous verrez qu'il n'y a pas de restriction entre la catégorie de la parole et la publicité discours. C' est très bien. Cependant, tout ce que nous avons à faire est d'ouvrir des crochets juste au-dessus de la classe. Bon, donc j'ai un espace de noms et on a une classe publique. Et puis nous pouvons dire auteur que j'écris, et nous avons juste inclus ou manquant en utilisant des déclarations. Très bien, et puis cette ligne seule, fondamentalement, nous allons restreindre l'accès à tout autre chose dans cette page. Si c'est une application MVC, ce serait probablement sur le contrôleur ou ce serait sur les actions. Ainsi, vous pouvez réellement mettre cela autorisé dans le contexte d' une application MVC sur le contrôleur pour restreindre l'accès à chaque action de ce contrôleur, ou sur les options spécifiques pour restreindre l'accès à cette action spécifique. Dans le cas de tableaux de pH comme ce que nous avons, vous pouvez le mettre sur toute la classe qui représente le pH. Et cela à son tour coulera vers le bas à tous les gestionnaires qui pourraient être dans le pH. Bien sûr, contrairement à MVC où vous avez un fichier avec plusieurs stocks de vente aux enchères dans plusieurs vues dans les pages Razor, vous avez plusieurs pages, chaque type d'autonomie. Donc, si vous vouliez restreindre l'accès à la fonctionnalité sur une page particulière, alors vous venez de mettre ce flot autorisé sur cette page particulière. D' accord. Donc, avec tout cela dit, regardons ce que l'ajout de ces quelques lignes de code apporterait à notre application. Bon, donc notre application est ouverte. Si je vais à la publicité, je vais y naviguer sans problème. Et puis si je choisis des catégories, alors vous voyez que ça me donne ça alors que ça me donne 40 avant-bras ne peut pas être téléphone, n'est-ce pas. La raison en est qu'il essaie de trouver par défaut une page de connexion. Voyez que je ne le savais pas. Je n'ai pas fait grand-chose. Droit. Il voit automatiquement bien, je vois sur le drapeau autorisé ici pour cette plage, vu que cela signifie que je dois demander à la personne de s'identifier avant. D' accord, donc si vous avez fait une sécurité formelle avec B.net Core, vous savez que c'est ce symbole. Ajoutez les éléments autorisés et de connexion. Vous avez déjà augmenté le risque de pages d'entités ED pliées auparavant. Mais comme je l'ai dit, on construit des boîtes. Je veux que nous soyons compagnie. Ils apprécient tous les morceaux et la façon dont ils s'intègrent dans l'image globale. Encore une chose avant de clore cette session. Parfois, vous voudriez ce genre d'autorisation sur chaque page. Donc, si vous êtes dans l'application MVC ou est une page vers le haut, parfois c'est que vous voulez juste être jamais est qu'une personne continue. Notre utilisateur IDE continuerait. Ils doivent s'identifier qui doivent être un utilisateur connecté pour accéder à n'importe quoi. Donc, dans cette situation, si vous utilisez des pages Razor, vous pouvez aller au démarrage, aller à la ligne qui dit ajouter des pages Razor. Et puis vous pourriez dire ajouter les options MVC sont inégalement, non ? Et puis à l'intérieur de cela, vous avez juste une expression lambda sur où vous pouvez voir les filtres q-dot, point add. Donc filtrer au cas où vous vous demandez, filtre présente ceci, c'est un filtre. Tout ce qui est entre crochets qui va sur un contrôleur ou une vente aux enchères ou dans ce cas une page. Et parfois même le code de composant. C' est ce qu'on appelle des filtres, non ? Donc ici, je vois ajouter un filtre. Et ce filtre serait une nouvelle autorisation. Le seul auteur en tant que filtre. Très bien, puis Contrôle des points pour inclure la référence manquante. Donc c'est comme ça que tu verrais tout dans mon et je manque l'ouverture et la fermeture là-bas. D' accord, donc c'est ma façon de voir chaque page qui dit qu'il y a une page dans cette application. La plupart ont cet auteur comme filtre par défaut. Donc ça veut dire que je pourrais même supprimer cette autorisation. Je n'en ai pas besoin explicitement parce que non, j'ai verrouillé toute mon application. Si vous utilisez MVC, cela pourrait être accompli de la même manière. Au lieu d'artères de pages, vous auriez probablement contrôleurs sont me laisser voir. Contrôleur. Donc, vous auriez des contrôleurs des vues, des contrôleurs avec des vues. Et puis vous n'auriez pas à dire ajouter des options MVC. En fait, tu verrais juste mettre cette expression lambda directement dans, n'est-ce pas ? Et voilà. C'est ainsi que vous ajouteriez ceux-ci, ce filtre par défaut à tous vos contrôleurs. Contrôleurs avec vous, non ? C' est ainsi que vous posséderiez toute votre application. Maintenant, à la lumière de mon verrouillage de l'application entière, il pourrait y avoir des pages que je veux accéder sans avoir besoin de têtes d'auteur, n'est-ce pas ? Voyons donc, par exemple, la liste des publicités devrait être gratuite pour la visualisation. Peut-être que la page de détails devrait être gratuite pour l'affichage. modification et la création sont limitées à et la suppression serait limitée pour authentifier le droit de cette personne. Donc, dans ce cas, je pourrais facilement aller à l'index et ensuite utiliser un autre filtre qui dit permettre anonyme et pas le déversement de Nemo, non ? Allez-y et incluez les références manquantes. Vas-y. Donc autoriser anonyme sur cette page et autoriser anonyme sur la page de détails, à droite, Juste pour l'amour de l'argument. Donc, si je recommence à courir sans déboguer, eh bien, alors vous verrez que je vais à la page de connexion. Pourquoi ? Parce que je ne finis pas et je n'ai pas autorisé anonyme sur la page d'index réelle du site Web. D' accord. Donc, vous allez sortir de la confidentialité et de l'index par défaut. Donc, partout où vous voulez vous rendre sans avoir besoin de vous authentifier, vous devez le dire pour autoriser l'anonyme. Donc juste à des fins de démonstration, autorisons l'anonyme. Et je vais juste reconstruire et essayer à nouveau et voir nulle part entre dans la page d'index, n'est-ce pas ? Si je vais à la vie privée, je charge anonyme. Si je vais dans les catégories, je n'ai pas autorisé l'anonyme. Je après la connexion. Si j'essayais d'aller à la publicité, alors on y va. Hey, ça marche juste sur créer, éditer , supprimer, tout ça nécessite des connexions, non ? Cependant, les détails fonctionneront car je charge anonyme. Donc, c'est une façon de sortir de la boîte. Ils sont plus bas. Ils étant Microsoft, l'ensemble du framework dotnet et de la suite de développement de base dotnet nous permet de choisir, choisir et choisir. Il est assez facile, à mon avis, quelle page devrait être sécurisée, sur quelle page ne devrait pas être sécurisée. Et bien sûr, cela devient beaucoup plus compliqué avec plus de règles métier. Mais je suis sûr que vous commencez à voir si vous n'êtes pas vraiment familier avec ce que nous avons fait jusqu'à présent, Comment facile à faire est vraiment de commencer à ajouter des restrictions sur la sécurité à notre application. Maintenant, quand nous reviendrons, nous allons brancher un flux de travail de déconnexion très simple. Il suffit de montrer à quoi cela ressemble lorsque nous arrivons à la connexion de la page, nous fournissons ce que nous devons fournir et à quoi cela ressemble lorsque nous sommes connectés. 4. Ajouter une fonctionnalité de connexion et de déconnexion: Très bien les gars, bienvenue. La dernière fois que nous étions sûrs que nous étions en train de mettre en place notre authentification par cookie et nous avons examiné toutes les choses que nous devons mettre en place pour nous assurer que notre application demandera à un utilisateur de l'identifier avant de les autoriser accès. Et nous avons vu à quel point c'était facile. Oh, non. La ligne que j'ai mise en évidence est légèrement modifiée par rapport à ce que nous avons eu la dernière fois et je vais vous expliquer. Donc, lorsque nous avons ajouté le cookie et que nous avons ajouté l'authentification globale sur notre autorisation Filtre Autre, nous avons remarqué qu'il serait toujours par défaut à une page qui dit que la barre oblique slash connexion avec chaîne de requête, qui est appelé une URL de retour, n'est-ce pas ? Et si vous ne vouliez pas qu'il aille sur ce chemin, non ? Donc, c'est complètement facultatif, mais par défaut va couper notre barre oblique deux-points est recherche d'une page de connexion à ce chemin. Si vous utilisez MVC, vous créez un contrôleur deux-points et disposez d'une option appelée login. Donc tout n'irait pas à ce contrôleur appelé cônes. Et il y a une action de connexion renvoyée. La vue dans les pages Razor serait aussi simple que de créer un nouveau dossier, d' appeler un cône de table des matières et de créer notre pH là appelé login. Droit ? Et si vous ne vouliez pas les valeurs par défaut ? C' est ce que j'ai fait ici. Si vous ne voulez pas que la valeur par défaut pour la passe de connexion, vous pouvez réellement ajouter un cookie, puis simplement mettre une expression lambda et définir le chemin de connexion pour être quel que soit le chemin que vous voulez qu'il soit. Donc, dans notre exemple, je vais utiliser cette palette personnalisée. Très bien, Encore une fois, avec tout le chemin personnalisé, il sera à la recherche d'une connexion slash de cône. Donc, c'est entièrement à vous de décider si vous voulez utiliser le chemin personnalisé juste à des fins d'entraînement ou si vous voulez vous en tenir à la valeur par défaut. Cela n'a pas vraiment d'importance tant que vous apprécierez le concept. Donc, avec le chemin personnalisé, je vais créer un nouveau dossier annulé. Cela pourrait facilement être l'authentification ou tout ce que vous voulez l'appeler immédiatement. Et à l'intérieur de tout, je vais créer une nouvelle page Razor. Je vais juste utiliser une page de résultats vide. Et je suis parti pour l'appeler login parce qu'il cherche dans le dossier d'authentification pour notre pH appelé login. Donc, une fois que je fais cela, j'obtiens mon HTML ou CSS, certains de nos autres et mon code derrière. Et nous allons préparer ça assez vite, car j'ai déjà un peu la forme ici. Donc je vais juste le coller là et ensuite je vous guiderai à travers ce qui est fait, non ? Donc, j'ai rouleau, d'accord, donc j'ai un premier div, disons peut ouvrir et fermer cette div. Et puis vous ouvrez et fermez un autre div. Et puis je veux dire que la section est facultative. C' est votre interface utilisateur, vous pouvez mettre ce que vous voulez. Mais c'est un peu modélisé à partir de la page de connexion standard à partir des identités. Donc, si vous avez déjà un projet ou une page d'identité, c'est bon. Tu peux toujours aller le chercher. Au moment où vous ferez cette leçon, cette page serait déjà dans le projet de toute façon. Donc, nous pouvons réellement aller chercher le code et le mettre si vous ne voulez pas taper point à partir de zéro. Mais à peu près en bref, j'ai juste un formulaire ici qui prend un email de point d'entrée, passe de point d'entrée et puis une case à cocher pour me souvenir de moi. D' accord, c'est tout ce qui a vraiment. Et puis pour couronner le tout, nous avons un bouton de soumission qui dit login. Très bien, ci-dessous, j'ai inclus le PowerShell pour les scripts de validation qui sont facultatifs à ceux-ci, à ce stade. Quoi ? Nous pouvons mettre toutes ces choses pour que vous puissiez aller de l'avant et répliquer cette forme ou que vous voulez la mettre en pause et la répliquer, ou que vous voulez aller chercher dans le projet, c'est bon. Qu' est-ce que je vais passer à ce stade ? Et nous allons coder le code derrière. Non, on ne fait rien de trop fantaisiste. Joseon, encore une fois, nous essayons juste de ramener certains concepts à la maison. La première chose que je vous encourage à faire est de permettre l'anonyme. Parce que si nous n'autorisons pas l'anonyme, il deviendra un appel circuité, ce qui signifie que lorsque les paramètres des cookies tentent appeler le chemin de connexion tel que défini dans le démarrage. Il va frapper cette page. Et puis si elle ne peut pas seul sur MOZ garderait la tendance à la page avec une URL de retour pour la page et alors il serait juste, je voudrais juste casser afin que vous puissiez réellement l'essayer et voir quel type d'erreur vous obtiendrez. Si insaisissable capable de voir cette erreur à l'avenir, tu sais, non ? Et probablement plus tard, nous pourrons expérimenter et voir à quoi ils ressemblent, mais juste mettre un peu anonyme suspect de ce chagrin de coeur. Maintenant, au lieu de cette page, je vais créer un modèle rapide. Et ce modèle. Va être appelé entrée. Donc, une fois de plus, c'est un peu un modèle du code existant sont certains Kodak serait généré pour vous par une entité, mais quand nous y arriverons, vous le verrez. Mais en ce moment tout ce que j'ai est d'acheter une propriété pour le modèle d'entrée. Nous avons une URL de retour par défaut correcte et un message d'erreur Tim a opposé son veto à. Nous n'avons probablement même pas besoin de cela, mais bon, et puis nous avons une classe appelée modèle d'entrée, qui prend ces trois champs. Très bien, alors pause, répliquez et bougez. Bon, Donc pour notre get, je vais juste le moderniser assez rapidement avec transformé en une tâche publique, asynchrone sur l'évier de Getty, Cela prend le retour que vous êtes en paramètre sur les valeurs par défaut à null. Et puis en fait, je peux faire un composant d'assignation osseuse ici, nous allons juste dire que tourner la tête est nulle, puis faire en sorte qu'elle soit égale à ça. Donc c'est à peu près ce que vous voyez. Et puis nous définissons le retour, vous êtes une propriété à être l'URL de retour. Maintenant sur cette note, je viens de réaliser que je n'ai pas l'URL cachée pour le retour sur le formulaire. Donc ce que je vais faire est un champ caché adéquat quelque part. Je vais juste le mettre sur l'ici. Et ce sera pour le retour, le retour euro, et son type va être caché. Donc, le point du retour de votre liste que vous savez quand vous êtes, lorsque vous essayez d'accéder à part pour donner une page et c'est un login et vous vous connectez navigue généralement vers le pH de cela. Il serait allé si vous étiez déjà authentifié. C' est ce que leur retour que vous êtes représente déjà, n'est-ce pas ? Donc quoi que vous cliquiez sur Terminé. Et puis il a dit, Hey, s'il vous plaît, connectez-vous d'abord. C' est stocker cette clique originale, cette destination originale. D' accord, donc c'est ce que vous faites, c'est pourquoi nous voyons quand vous arrivez ici, quelle est la page qui essayait d'être consultée ? Ils en gardent une trace. Maintenant, la prochaine chose que nous ferions est où nous traitons création et la validation réelles de l'utilisateur. D' accord, donc ici, ce que nous voyons c'est que nous avons une méthode asynchrone sur la politique. D' accord ? Et puis à l'intérieur de cette méthode sur la post AC, je vais m'asseoir là retourner l'URL à nouveau. Donc même type de composants M et peut travailler ici à nouveau. Très bien, si ce n'est pas le cas, si c'est nul, alors par défaut la page d'accueil. Pas de problème. D' accord. Et probablement un peu plus de refactoring peut arriver, mais c'est bon. Nous pouvons laisser cela seul pour null, null dans un scénario réel, ce que vous voudriez faire à ce stade, donc pause fait quand ils soumettent le nom d'utilisateur, mot de passe. Et si tu veux, ils veulent qu'on se souvienne. À ce stade, vous devriez vraiment aller à la base de données et voir cet utilisateur existe-t-il ? Oui. D' accord. Ces actions, si ce n'est pas le seau de flottabilité et dire s'il vous plaît , désolé, mais il est validateurs qui vous êtes. C' est très bien. Mais c'est vrai. Pas pire que dans une sorte de frais de démonstration. Donc ce que je voulais faire, c'est juste du code dur. Ce n'est pas une bonne pratique. Généralement pas de bonnes pratiques. Mais encore une fois, c'est des fins de démonstration. Go voulait juste voir à quel point c'est idiot. Donc, je vais juste au code dur et l'adresse e-mail des inondations. Voir Admin, test.com. Dites si la personne entre admin sur test.com avec un mot de passe de p au signe mot un, n'est-ce pas ? Donc, c'est ma forte citation spéciale sans citation forte posture que j'utilise habituellement. Mais c'est juste ce que je mets ici une fois de plus, à des fins de démonstration, il y a quelques choses qui ne vont pas ici. Gagné votre mot de passe ne doit jamais être en texte brut. J' utilise ce bus ou il ne devrait jamais être en texte brut. Donc je mets ça à des fins de démo. Plus tard, vous regardez comment vous pouvez hacher le mot de passe sur les mots de passe ressemblera réellement lorsqu'il est stocké pour un, donc un fichier texte brut. Maintenant, quand nous trouvons que les utilisateurs, alors voyons, c'est l'utilisateur que nous recherchons. C' est ce qui a été entré. Alors ce que nous devons faire est de dresser une liste de revendications. Non, je dirai que c'est à peu près le point de données sur l'utilisateur, non ? Littéralement, le mot dit une crème. C' est pour ça que Klimt sera. Donc, ce sont des bits d'informations que l'utilisateur a. La mer, les mers, qui je suis, c'est ma prétention à la gloire. C' est qui je prétends être celui que tu veux le geler. C' est fondamentalement ce que j'ai propre représente une construction de notre liste de réclamations ici. Je vois Barclay et z égal à une nouvelle liste de réclamations. Et là, je vais mettre en place quelques réclamations. Donc nucléon où ajouter à la liste un noyau. Et nous avons quelques constantes ici qui réduisent nos besoins sont ID et chaînes magiques. Donc, il y a certaines revendications que le système va toujours reconnaître et rechercher automatiquement et ils sont un peu stockés, sont donnés à nous par le biais de ce système de bibliothèque de points de sécurité, les types clean.com, non ? Donc, vous devriez probablement inclure cette instruction en utilisant lorsque vous mettez dans cette ligne de code. Très bien, Donc, les types de revendication identifiant de nom de point. Donc, si vous regardez la chaîne statique, c'est à quoi elle ressemble. Maintenant, imaginez avoir à taper cette chaîne chaque fois que vous vouliez nommer l'identifiant, sachez. Donc, tout comme avec le cookie éteint, ils nous ont donné cela avec des constantes qui sont un fan de globalement acceptable, ou ils fonctionnent avec JWT avant nos jetons Web JSON avant. Ou, vous savez, tout type d'API, vous verrez toujours les revendications comme étant un thème commun en matière de sécurité. Et puis cette chaîne formatée ici, que vous voyez est une norme XML ouverte, est acceptable par de nombreux systèmes différents. Vous aurez besoin de .net Core, mais dotnet Core est tiré parti du fait que nous fournissons des choses que n'importe qui d'autre peut utiliser, n'est-ce pas ? Donc, nos choses facilitent, n'importe qui est plus maigre. Donc, en continuant, revendiqué test.html en feu. Quelle valeur voulez-vous être stockée comme celle-ci, n'est-ce pas ? Vous avez revendiqué des types nom de point, d'accord ? Vous mettrez votre nom d'utilisateur ici. Donc je codage dur certaines choses qu'ils peuvent avoir une idée de ce qui se passerait. Nous sommes nouveaux, propres, règles de types propres. Quel est le rôle de cette personne ? C' est un administrateur, est l'acheteur des distilleries de l'utilisateur, et cetera, nouveau, propre. Et puis vous pouvez ajouter plus de revendications comme il veut de points de données aléatoires, valeur aléatoire. Vous pouvez ajouter autant de revendications que cet utilisateur aura besoin pour fonctionner dans le système. Vous pouvez les ajouter, non ? Sinon, le type de sera ajouté par défaut. Qu' est-ce que je vous montre une fois de plus tous les écrous et boulons qui vont ensemble pour constituer ce qu'on appelle un principe de réclamation. Donc, après avoir la liste des revendications, nous voulons créer un utilisateur d'identité. Donc, vous dites utilisateurs d'identité var égale à une nouvelle identité de revendications, qui prend cette liste de revendications qui vient d'être créé, non ? Et puis nous lui disons que nous utilisons les paramètres par défaut d'authentification des cookies, ce schéma d'authentification, non ? Donc, ici, nous voyons, s'il vous plaît ajouter cette liste de revendications clés à ce schéma particulier, qui est des cookies. Non, vous ne pouvez pas avoir plusieurs identités. Est-ce que plusieurs schémas utilisent la même identité, n'est-ce pas ? Ou un principe. Donc ici, nous voyons le principe VAR est vraiment juste pris l'utilisateur d'identité, non ? Ainsi, vous pouvez avoir plusieurs identités, plusieurs utilisateurs d'identités avec plusieurs schémas. Plus tard, nous verrons comment nous avons réglé la connexion en utilisant des bibliothèques tierces. Nos systèmes, nous verrons que nous pouvons ajouter d'autres revendications, créent d'autres identités en utilisant les revendications de ceux-ci, n'est-ce pas ? Donc, l'utilisateur d'identité principe de loin est égal à nouveau principal. Et puis la dernière chose que nous devons faire est en fait de connecter cet utilisateur et d'envoyer tout ce dont nous avons besoin pour dire à l'application que cette personne est signée afin qu'elle ait besoin de les signer dans l'application. Nous allons donc appeler le contexte HTTP. Super. Et cela représente fondamentalement la ligne plate, la ligne de base pour l'endroit où chaque requête et réponse unique passe à travers. Donc, si nous disons aux contextes de se connecter en utilisant l'authentification des cookies, à droite, le principal , donc créer notre, laissez cette application savoir que ce principe avec ces revendications, utilisateur est fondamentalement un utilisateur connecté. Est-ce que nous les avons identifiés ? Et vous pouvez vous asseoir si elle est persistante ou non. Donc l'assistant e-sport serait comme quand vous dites Se souvenir de moi sur n'importe quel refroidit votre ordinateur et rallumez-le et vous êtes toujours connecté. C' est à peu près tout ce qu'ils font là qu'ils voient, oui, rappelez-vous ce cookie pour la prochaine fois afin que l'utilisateur coché pour ne pas être sans faux à cookie de point persistant est pour leur authentification. Après tout cela, nous allons retourner la redirection locale sur avec cette URL de retour. Donc, nous utilisons la redirection locale comme l'une de ces fonctionnalités de sécurité et tout cela parce qu'il ya des moments où les gens peuvent détourner, j'utilise une session sur essayé de leur donner leur propre version du site Web qu'ils voulaient qu'ils cool outil ou autre chose. Donc loci redirige pour s'assurer qu'il ne lit que directement à quelque chose qui est interne. Cause rappelez-vous que la chaîne de requête URL de retour, qui est sujette à changer. Donc, si quelqu'un mettait dans Google.com, il naviguerait vers google.com une fois que j'ai authentifié. Alors pensez à ce que notre Tucker pourrait faire avec ça. Donc logo, la redirection est un moyen très simple, très efficace d'essayer d'atténuer cette attaque de redirection. Maintenant, en passant à partir de cette déclaration if, je vais juste dire autre, revenir sur autorisé ou non autorisé ici, si vous êtes abusé des développements API qui vous donnera un 40 sur la réponse que le in-order, vous n'êtes pas autorisé à effectuer des tests ou une vente aux enchères. Donc ici, si vous essayez de vous connecter et que cela échoue, nous avons juste besoin de savoir que vous n'êtes pas autorisé. C' est un exemple d'os nus très simple encore une fois , d' accord, alors prenons ceci pour un tour rapide. Bon, donc nous avons notre application, j'ai cliqué sur les catégories et il m'a navigué ici. Donc notre test est admin test.com et notre mot de passe est P, C'est un SSD ou RDD1, non ? Juste pour être sûr, alors nous cliquons sur Connexion et puis nous sommes redirigés vers la page des catégories, non ? Donc, c'était que l'URL de retour, Cliquez sur les catégories, connecté et juste nous navigué vers les catégories. Très bien, Donc, si vous n'êtes pas hors de la chaîne de requête, vous ne voyez pas en ce qu'il avait ce genre d'URL de retour de point d'interrogation égale, et dans certaines URL, certaines prend là qui a été retourné. Tu sais, ça me demande si je voulais voir si c'est bien. Mais vous remarquez qu'il n'y a vraiment aucune indication que nous avons été connectés en rouge. C' est là que l'accès aux informations de l'utilisateur entre en jeu. Et ce que nous voulons faire dans la prochaine leçon est de comprendre comment nous pouvons accéder à ce principe de réclamation, ainsi que faciliter la fonctionnalité de déconnexion. 5. Explorer les revendications d'identité et les principes principaux: Hé les gars, bienvenue. Donc, la dernière fois que nous étions ici, nous étions assis sur notre fonctionnalité de connexion, que nous avons pu travailler aussi loin que nous pouvions voir parce que nous avons pu passer l'authentification à l'écran et nous voir naviguer là où nous avons besoin c'est pour aller. Donc, la vraie preuve dans n'importe quelle application si quelqu'un est connecté est quand vous affichez pour eux, bonjour et nom d'utilisateur ou certains là, il y a toujours un repère visuel pour accompagner une authentification réussie ou une session authentifiée pendant que la personne est dans l'application. Donc, nous voulons savoir est mis en place notre application pour afficher l'utilisateur connecté, leur nom d'utilisateur en fait, et probablement changer ce qui est affiché dans le menu par rapport au fait qu'ils ne sont pas authentifiés. Dans cette activité, nous examinerons également comment les revendications nous aident à faire tout cela. Donc, ce que je voudrais que vous fassiez, c'est d' aller de l'avant et de créer une nouvelle heure partielle. Nous allons l'appeler login partiel. Ainsi, vous pouvez simplement appeler directement unshared, appuyez sur Ajouter, puis créer la nouvelle page Razor ou simplement créer un nouvel élément. Et puis vous pouvez frapper vue rasoir. Donc, si vous créez une recette et que vous allez obtenir le pH et le code derrière. On n'a pas besoin des deux. On veut juste le fichier lui-même. Donc, vous pouvez ces vue rasoir de chaleur, appelez cela soulignent connexion partielle. D' accord, j'en ai déjà un, donc je vais juste te montrer que je te montre ce qu'il faut faire, puis appuie sur Ajouter et puis tu auras ce nouveau fichier tout seul, non ? Donc, quand tu auras ce dossier, on va le mettre en place non. Pour qu'il puisse servir de repère que nous allons utiliser l'affichage, la connexion utilise des informations. Donc, quand vous avez ce fichier, vous pouvez aller de l'avant et commencer à l'adapter comme ça. On crée une nouvelle liste non ordonnée, lui donner la classe navbar nav. La raison en est que nous voulions tenir dans la barre de navigation et les allèles, que je vais vous montrer dans quelques secondes. Donc, la chose est que si vous avez jamais échafaudé un projet MVC ou dotnet Core en général, avec l'identité incluse. Bien, j'ai fait ce genre de sortie de la boîte, mais depuis qu'on le fait à partir de zéro, on peut voir les écrous et les boulons et comment tout est connecté. Je vous montre juste comment configurer ce fichier rapidement. Donc, nous aurons la connexion partielle, donnez-lui cette liste non ordonnée avec la barre de navigation de classe. Et puis on va avoir une déclaration if. Donc, nous voyons si l'identité de point utilisateur est authentifiée. Donc, l'utilisateur ici représente le principe des revendications qu' il n'existe pas dans les contextes HTTP sont en fait toujours existe. Mais jusqu'à ce que nous appelions la fonction qui dit se connecter, elle n'est pas authentifiée et elle n'aurait aucune revendication. C' est pourquoi, lorsque nous nous connectons, nous voyons la connexion en utilisant ce schéma d'authentification. Donc, cela signifie que vous n'êtes pas authentifié. Vous avez votre mandant et le mandant a l'identité et l'identité comme revendication. Donc, c'est comme ça que tout se réunit non, pour être mis dans les contextes HTTP objet utilisateur, non ? Donc, même si je peux voir l'utilisateur par lui-même ici, en réalité, l'utilisateur est juste comme un objet global que je peux appeler ici, mais c'est vraiment une partie des contextes HTTP parce que je ne peux pas le voir cet utilisateur point, c'est les mêmes objets vraiment, non ? Donc juste vous montrer comment tout est connecté. Donc user.name, identité, point est authentifié, dira oui ou non. Si elle est authentifiée, alors nous voulons notre élément de navigation ici. Et je le mets juste à l'intérieur du lien Navbutton. Donc tout a l'air uniforme, mais ça ne va pas vraiment nulle part. Et nous lui donnons la valeur du nom de point d'identité de données utilisateur san. Donc le nom ici représente une revendication. Et rappelez-vous que nous ne sommes pas assis sur les revendications que nous avons dit de nommer ceux qui sont délibérément donné deux valeurs différentes afin que nous puissions voir lequel d' entre eux est réellement utilisé et nous voyons un nom d'entité. Donc, nous verrons ça dans quelques uns. Donc, nous avons le nom du point d'identité, et puis nous avons ce bouton de logo, qui va naviguer vers une page que nous sommes sur créer également dans le dossier d'authentification appelé logos. Et son seul but est de consigner les sels de la personne. Donc, s'ils sont authentifiés, ils devraient voir leur nom d'utilisateur et leur logo naître. Et si vous voulez, vous pouvez probablement qualifier cela et dire bonjour, nom d'utilisateur point ou bienvenue. Vous savez, quelque chose d'amical s'ils ne sont pas authentifiés à qui aurait été dans la section « else », alors nous voulons afficher la possibilité de s'inscrire. Je n'ai pas sont juste la page au moins pas encore. Mais la possibilité de s'inscrire ainsi que la possibilité de se connecter. Et comme je suis ici, je vois que je dois modifier en quelque sorte ce est le chemin de la page B et laisser le bruit hors slash connexion. D' accord, donc avant de faire tout ça ou avant de sauter dans ce qui se passe avec le logo, je veux qu'on jette un coup d'oeil à Watts. Cela va céder. Donc, pour le moment, je ne suis pas connecté. Si vous êtes connecté, vous allez probablement voir quelque chose d'autre affiché, mais c'est très bien. Je vais juste y aller et me connecter. Et quand je le ferai, vous verrez mon message de bienvenue ici et mon nom d'utilisateur ici. Donc, cela signifie que la revendication que nous donnons cette valeur est ce qui est accessible par un nom d'entité. Il est clair que ce n'est pas vraiment ce que nous voulons. Nous ne voulons pas voir le nom d'utilisateur de bienvenue ici. Au lieu de cela, nous voudrions afficher le nom d'utilisateur réel. Donc, nous leur donnons juste la variable appropriée qui stockerait tout ce que nous leur avons demandé comme nom d'affichage. Parfois, vous voulez afficher un Prénom, Nom. C' est aussi simple que ça. Vous attribuez ce rôle ne sont pas une inflammation plutôt à cette revendication. Et puis il va être affiché comme ça. Donc, en changeant cela, si je retourne en arrière et jette un coup d'oeil à la page, vous remarquerez que je vais toujours avoir un nom d'utilisateur ici. Pourquoi ai-je encore un nom d'utilisateur ici ? Même si je viens de dire clairement changement et propre. C' est parce que la revendication a été créée ou que toutes ces revendications ont été créées. Ces objets sont créés et ils ont été connectés et stockés dans le cookie. Donc, le cookie existe toujours pendant que je peux faire des changements, mais jusqu'à ce que je me déconnecte et que les bikinis sont allés à reconstruire l'identité des données. Il est donc difficile de changer une identité après qu'elle est déjà construite et déjà authentifiée peut être faite. Mais ce n'est généralement pas quelque chose que les gens s'entraînent à faire. Donc, le fait est que vous voulez construire toutes vos revendications et votre identité avant d'authentifier l'utilisateur. Maintenant, je vais juste enregistrer des bateaux, donc ça devrait tuer cette session connectée. Je vois que je viens de me déconnecter. Jetons donc un coup d'oeil à ce que les pages de logo font. Donc, créez une nouvelle recette. Donc, la page de résultat, vous pouvez utiliser soit une page vide, c'est bon, mais nous voulons à la fois la vue et le code derrière. Donc, la vue est vide. Mais le code derrière Git va faire quelque chose comme ça. Donc, vous pouvez obtenir que ne évite pas sur la méthode gets, vous pouvez toujours changer c'est notre propre pour être une AsyncTask des résultats d'action sur get, on, get async. Et puis nous allons toujours utiliser l'appel de contextes HTTP à la méthode asynchrone d'inscription, plaider nulle part en signant toute l'authentification des cookies, n'est-ce pas ? Cela, nous voulons simplement revenir à la page d'index de notre application entière. À ce stade, vous pourriez probablement penser aux URL de retour et à toutes ces choses, mais nous n'entrerons pas dans cette fantaisie. Tout ce qu'on veut juste savoir qu'on se déconnecte en ce moment, non ? Donc, c'est à peu près tout ce que fait le logo. Essayons de dire que j'ai besoin d'une fois de plus. Donc, si je me connecte, je suis sur ma page de connexion, mets mes identifiants, et puis je vais là. Non, il construit la réclamation avec la valeur de l'adresse e-mail étant Boston comme nom, propre. Si je me déconnecte va tuer l'authentification des cookies et me remettre sur le, sur l' écran d'index, n'est-ce pas ? Si je vais à des publicités après la connexion ou, oh désolé, celui-ci n'a pas été protégé après la connexion pour les catégories. On y va. Si je dis Souviens-toi de moi, ça va persister. Donc, même si je ferme le navigateur, le cookie existera toujours. Cliquez sur Connexion. Et puis si nous allons juste à Inspect Element ou F2 sur votre clavier et nous passons à l'application. Vous verrez en fait les cookies qui existent pendant que nous allons faire le CST ici, application d'identité, n'est-ce pas ? Des cookies, toutes ces choses. Donc, si j'efface, laissez-moi juste effacer tous ces cookies sur les logos login. Vous verrez ici que le cookie est créé. Donc, au niveau très basique, c'est comment vous pouvez activer l'authentification des cookies, comment nous pouvons afficher qui est connecté, et comment nous pouvons contrôler le flux de notre application et de nos logos. Ayant écrit du code à partir de zéro. 6. Explorer les revendications d'identité et les principes principaux: Salut les gars, bienvenue. Donc, dans la leçon précédente, nous avons regardé comment nous pouvons accéder à la revendication afin que nous puissions mettre en place la connexion, Tenez l'authentification des cookies fonctionne et tout, l'ensemble du flux de travail. Dans cette leçon, nous voulons en quelque sorte construire sur ces connaissances et examiner ce qu' il faudrait pour faciliter le moteur de connexion tiers. Donc ouvert à savoir que nous avons construit notre propre moteur de connexion aussi anémique que le code de connexion est, n'est-ce pas ? Non, parce que nous avons codé en dur ce que nous recherchons. Nous aurions probablement utilisé une base de données sur plus tard, nous allons utiliser une base de données. Eh bien, juste pour passer à travers les bases, nous voyons que nous vérifions l'entrée par rapport aux valeurs attendues. Et puis nous allons de l'avant et faisons l'authentification. savez quoi faire si vous vouliez compter sur des plateformes tierces ? Parce que la plupart des fois où vous allez sur des sites Web, vous verrez quelque chose comme une connexion en utilisant Facebook login en utilisant tutor login, en utilisant Google, et cetera. Et ce genre d'esprits de l'utilisateur. Le, le, que dois-je dire non, la tâche fastidieuse de mettre dans le formulaire d'ordre de remplissage quand ils ont déjà ces scans d'un cône. Donc ici, je voulais juste montrer les bases de la façon dont vous feriez pour faciliter ce trou. Nous l'ajouterions à ce que nous avons actuellement. Nous ne serons pas en mesure de le faire à l'achèvement cependant, parce que vous devrez enregistrer votre application et obtenir un ID client et un secret client, je vais vous montrer que si vous aviez toutes ces choses, ce qui serait nécessaire OFF vous pour l'obtenir travaillant dans votre application. Donc, ça commence dans le fichier de démarrage, juste ici, on aurait dit Authentification AD. On a dit qu'on voulait un schéma de cookies d'ici. Nous pouvons en fait, je vais dire la chaîne de marguerites, mais nous pouvons en fait, en utilisant l'API Fluent, ajouter des bibliothèques supplémentaires ici, accord, donc c'est un cookie étrange, mais alors que faire si ce point-virgule ne le finissait pas là, je pourrais dire quelque chose comme ajouter Google. Et cela prendrait ses propres options. Et l'expression lambda avec des options dont elle aurait besoin, n'est-ce pas ? Donc ici, il y a évidemment une ligne rouge, mais si je fais des points de contrôle et tout cela ne me donne pas l'invite pour la bibliothèque. C' est très bien. Si nous allons à New obtenir les tendances des ventes, c'est un raccourci. Et il est clair que ça ne marcherait pas. Alors passons juste à un nouveau Git. Et dans les boroughs de week-end NuGet et trouvez les différentes bibliothèques pour nos fournisseurs OpenID. Donc, si nous tapons juste, laissez-moi essayer d'ouvrir l'ID. Très bien, pas OpenID, je m'excuse, nous allons taper l'authentification. Donc, c'est une bibliothèque plus globale à ce que nous voulons. Donc, sous l'authentification, vous voyez beaucoup, mais alors vous verrez que nous avons aussi de l'espace pour Google, Facebook, Microsoft sont codétenus, et Twitter, n'est-ce pas ? Donc, pour n'importe lequel d'entre eux que vous souhaitez utiliser en tant que fournisseur OpenID pour l'authentification sur votre application. Vous pouvez y aller tout droit. Essayons donc avec un Google. En fait, je vais juste les installer tous parce qu'à la fin de la journée, je voulais juste vous montrer à quoi ressembleraient les séances pour n'importe qui. D'accord. Donc, je les ai tous installés. Et si je saute à mon fichier de démarrage, maintenant vous verrez que chez Google n'a plus une erreur. Donc, comme je l'ai dit, je peux le nez, le menton tous. Donc, ce que je vais faire est juste dupliquer chez Google. Et à partir de là, je dirai juste ajouter Twitter. Facebook. On y va. Et ajoutez Microsoft. Donc, toutes ces bibliothèques étant présentes un plus faible pour les utiliser comme moteurs d'authentification potentiels pour notre application. Donc, au-delà des lignes supplémentaires, non, je vous montre ce qui a déclenché au niveau de base pour la connexion à ces services, non ? Ainsi, les bibliothèques, nous saurons que les emplacements de l'API détiennent pour parler à l'API appropriée pour l'authentification contre un service. Cependant, de votre part en tant que consommateur tiers, vous devez vous assurer que vous avez enregistré vos sites Web ou votre application sur Google ou Twitter, Facebook, peu importe. Et ils lui fourniraient une pièce d'identité et un secret. Donc, vous devriez fournir ces deux valeurs, null. À ce stade. Ce serait aussi facile que de mettre la clé revendiquée ici et le secret ici, non ? Mais vous ne voudriez probablement pas les coder en dur ou les mettre en lumière dans le code source. Parce que lorsque vous activez ceci sur GitHub ou n'importe quel formulaire de contrôle de source, il sera globalement accessible à tout le monde et n'importe qui peut détourner son droit. Vous voudrez les placer dans une forme quelconque de paramètres qui sont sécurisés. Donc, cela éliminerait par défaut aussi le fichier AP settings.js ON car ce serait aussi accessible publiquement que de le mettre dans le fichier de démarrage. Alors, c'est là qu'on parle de secrets. Donc, dans votre application, si vous êtes les projets Web, vous pouvez réellement dire gérer les secrets utilisateur. Et puis à partir d'ici, vous pouvez mettre vos valeurs, vos paires de valeurs clés. Donc, par exemple, si nous devions mettre dans la paire de valeur clé sont l'ID et le secret pour dire, Google. Vous créeriez une section appelée Google peut-être. Et vous allez remarquer que c'est le même genre de fichier JSON que nous sommes habitués avec l'application settings.js IN lu. Donc tu dirais Google, puis tu mettrais la clé qui serait revendiquée et ensuite tu mettrais la clé ici, quoi que ce soit, la sienne ici, et aidez-moi à corriger mon orthographe, alors tu aurais ton client secret. Laisse-moi juste sauter et m'assurer que je ne l'épelle pas mal. Donc tu dirais le secret du client et tu verrais le secret ici. Bon, donc c'est essentiellement ce que tu ferais. Et puis autant d'entre eux que vous avez, vous avez Google et Facebook, n'est-ce pas ? Sera la même chose, et cetera, et cetera, et cetera. Donc, tous ces éléments seraient stockés dans ce fichier secrète. Et si au cas où vous êtes curieux de savoir où cela sécrète est, il est en fait stocké dans un répertoire secret qui est appelé via ceci, quelle que soit cette valeur représente, c'est là qu'il est. Donc la pensée que ça a peu de sens pour toi, et je ne peux pas l'expliquer beaucoup mieux que ça c'est pourquoi on l'appelle un secret, non ? Donc, c'est là que ces secrets seraient stockés et quoi que ce soit comme ça, toutes les clés d'API ou tout ce qui est un peu sécurisé, vous voudriez mettre, assurez-vous de le mettre dans ce fichier de secrets de points JSON. Une autre façon de gérer dans les secrets pourrait être d'utiliser la console. Donc, en utilisant la console Package Manager, vous pouvez réellement voir quelque chose comme les secrets de tiret utilisateur .net. Cela ne complète pas init et cela le ferait démarrer. Et puis en dessous de cela, vous verrez dotnet utilise des secrets ensemble. Et puis vous mettiez comme nos paires de valeurs clés, je dirais quelque chose comme Google deux-points, ID client, ce qui signifie la section sur Google et l'ID client clé. Et puis la valeur de la clé ici. Bon, donc celui qui est le plus facile pour vous, vous pouvez le faire cependant. Ces ondes, peut-être que vous n'utilisez pas Visual Studio. Si vous utilisez Visual Studio Code, vous voudrez probablement utiliser l'approche en ligne de commande de toute façon. Donc, c'est là que vous stockeriez le secret et tout pour accéder à ces secrets, peu près vous devriez aller à la configuration. Donc, au lieu d'écrire et la valeur que vous diriez configuration et en utilisant des crochets, vous devriez regarder la valeur de clé apparaissant de sorte que la, la section plutôt deux-points la clé, n'est-ce pas ? Donc, juste de la même façon que vous l'auriez créé dans la ligne de commande. Voici des domaines qui connaissent juste les apologistes, mais Google, c'est une section et puis l'ID client me permet de corriger l'orthographe afin que je sois cohérent. Donc, Google et puis ID client. Et puis il saura juste aller regarder dans les secrets pour la même chose pour un secret client et pour tous les autres. D' accord ? Donc, c'est à peu près comment vous feriez pour sécuriser vos clés secrètes que vous voudriez pour votre API tierce. Donc, je vous montre dans le contexte des fournisseurs d'authentification Qu'est-ce qu'en général, ce soit un fournisseur de messagerie, sont tout autre chose que la clé API donnée que vous devez garder sécurisé, C'est son ensemble, vous le feriez essentiellement et c' est ainsi qu'on y accède quand on en a besoin. Maintenant, en dehors de cela, et si je voulais changer peut-être le schéma par défaut du schéma de défi plutôt que des cookies. Donc, non, ce que nous avons c'est le cookie comme celui qui était le premier que nous avons installé. Mais avant de dire que je cookie dans cette authentification AD, nous pourrions réellement changer cela en une configuration d'options entière. Donc, je vais juste utiliser toute l'expression lambda, puis l'objet. Et puis à l'intérieur d'ici, nous pouvons spécifier toutes les options comme ou point, schéma d'authentification par défaut, schéma Défi par défaut, ski de connexion par défaut, non ? Donc, si vous voulez par défaut utiliser Facebook, vous pouvez ajouter toutes ces choses ici. Donc, si j'ai dit que le schéma par défaut doit être le cookie d'authentification, c'est bon. Mais alors que faire si mon défi, avant de créer un cookie, Mon être suivi Chaldéens, lui et moi voulions qu'il soit, Je pourrais dire les valeurs par défaut de Google, qui est une constante que je reçois. On va de cette bibliothèque Google. Par défaut, le schéma d'authentification par point. Et je suis presque sûr que j'ai ces valeurs par défaut pour n'importe quel autre. Donc Facebook est par défaut. Voyons s'il en existe un. Les valeurs par défaut, la pensée, le schéma d'authentification, n'est-ce pas ? Donc, quel que soit l'un d'entre eux vous auriez voulu être le schéma d'authentification par défaut, vous pouvez aller de l'avant et spécifier. Donc, cela signifierait que lorsque nous naviguons vers une page qui est protégée par notre filtre d'autorisation, cela indiquerait quelle est la façon par défaut que je veux que mes utilisateurs s'authentifient. Donc, avec la configuration automatique de tout cela, c'était l'authentification par défaut des cookies était une authentification par défaut. Il est allé droit notre page de connexion, cependant, non, je vois si la personne ne va pas directement à la page de connexion, comme ils naviguent slash login et y aller. S' ils vont à l'adresse IP est protégée, alors je veux qu'ils vont directement au défi Facebook pH, à quel point votre application naviguerait loin à Facebook, leur permettre de s'authentifier avec leur compte Facebook et puis retour avec toutes les réclamations et les informations de Facebook. Et puis le fait est que ces revendications que nous aurions mis en place dans notre login comme de l'argent ainsi que les coutures, ces revendications sont ce que vous allez obtenir essentiellement de n'importe quel fournisseur OpenID, de toute authentification sur des tiers plate-forme d'authentification. Ce sont des revendications communes qui sont partagées. Donc c'est un peu comme une norme. C' est pourquoi lorsque LC et que alors même si elle dit nom ici, vous verrez cette URL très longue. Donc, cette URL signifie que chaque application, peu importe si c'est dotnet, Facebook, Python, quelle qu'elle soit, toutes peuvent atteindre le même niveau. Et je suis d'accord que c'est ce que j'ai appelé la revendication est, et c'est ainsi que je vais l'utiliser dans ma demande. D' accord, donc c'est ce que je vais arrêter. Comme je l'ai dit, vous devriez aller signer, assurez-vous d'enregistrer votre demande et ainsi de suite. Mais au niveau très basique, c'est ainsi que vous résoudrez cela. Une chose que je recommande avant de passer cependant, est de commenter la supplémentaire. Donc o démontrer que tenir pour ajouter l'ID client et le secret en utilisant la configuration. Mais alors si vous ne fournissez rien de raisonnable ici, alors vous obtiendrez des erreurs d'exécution. Je vous recommande d'aller de l'avant et de les commenter ou de les supprimer, ou seulement d'avoir ceux que vous savez que vous allez utiliser. Vous, je vais les laisser ici commentés de sorte que lorsque vous affichez le code source, vous pouvez avoir un point de référence. Mais en vous recommandant une fois de plus, commentez-les pour que lorsque vous exécutez, vous n'ayez pas d'erreurs d'exécution, n'est-ce pas ? 7. Examen de la section: D' accord, donc c'est tout pour cette section. Récapitons rapidement ce que nous avons accompli. Nous sommes donc venus ici, que nous connaissions l'identité ou non. On savait sans doute ce que l'identité pouvait faire pour nous. Mais dans cette situation, nous avons commencé à partir de zéro obligation de base, base de données de base. Qu' il s'agisse de base ou de complexité, les principes restent les mêmes. Nous savons que nous pouvons aller au début de la semaine et un ensemble de la base de données, nous pouvons configurer l'authentification dans notre application. Nous pouvons lui faire savoir qu'il est censé utiliser l'authentification par cookie. Nous pouvons le faire tourner à n'importe quel chemin de connexion que nous voulons, quelle que soit la page personnalisée. Toutes ces choses merveilleuses. Nous pouvons configurer notre politique d'autorisation globale pour l'application. conséquent, chaque page par défaut devrait être accessible par un utilisateur authentifié. Nous savons également que dans le démarrage, nous devons ajouter le middleware pour utiliser l'authentification, ce qu'il est recommandé de faire avant l'autorisation d'utilisation, qui sort généralement de la boîte de toute façon. Et bien, côté informatique de cette porte, nous avons cherché à mettre en place un simple formulaire de connexion. J' avais ajouté quelques liens supplémentaires nous pour afficher à quoi cela ressemblerait lorsque nous affichons connexion avec les plates-formes tierces. Et avant de passer à partir du démarrage, nous avons également cherché à ajouter quelques-unes des étapes vers l' ajout d'une authentification tierce sur la façon cacher les sécrètes de clé de revendication dans la partie secrets de notre application dotnet Core. Donc toutes ces choses merveilleuses que nous avons pu accomplir. Nous avons également examiné le fait que nous pouvons bonjour anonyme. Donc si nous ne l'avons pas fait, ils auront une autorisation globale. Si vous voulez autoriser qui utiliserait des crochets et dire autoriser sur la page ou l'action que nous voulons restreindre. Sinon, nous aurions à dire autoriser anonyme si tout est restreint, ce que nous voulons permettre à certaines pages d'être accessibles par sur personne authentifiée. Donc, comme notre page d'accueil à certainement autoriser anonyme afin qu'il pourrait être notre page de destination. Nous avons également examiné la mise en place des demandes d'accès. Donc, après la connexion, nous savons comment construire cette identité des revendications, puis le principe des revendications, puis finalement signer la personne, créant le cookie en cours de route. Et puis comment accéder à ces écrans pour afficher les informations de la authentifie cette personne. Donc, avec tout le coup fait, je vais juste vérifier cela parce que GitHub est l'endroit où nous stockons tous nos camions de changement, tout ce que nous faisons en cours de route. Donc met dans mon message rapide là et aller de l'avant et de commettre tout et couler et laisser ce téléchargement. Et c'est tout pour cette section. Alors je te verrai bientôt. 8. Qu'est-ce que le noyau de l'identité: Salut les gars, bienvenue. Dans ce module, nous allons commencer à examiner la bibliothèque d'identités et toutes les fonctions qu'elle nous permet de connaître uniquement pour le contexte. Identity or Identity Core est la bibliothèque qui est disponible à n'importe quelle vitesse sur une application principale. Et cela nous permet de gérer les opérations et les données relatives aux utilisateurs avec Alltop interagir avec un code très complexe. Bien que la boîte, elle est entièrement verbale. Si vous avez besoin d'un code complexe, vous pouvez l'étendre assez facilement. Mais prêt à l'emploi, il a été assez fiable et puissant pour vous. Et mes besoins, bien sûr, comme je le dis toujours, les règles commerciales de chacun seront différentes. Sachez, car il se rapporte à ce que nous avons fait par rapport l'identité qui nous permettra de faire avec l'identité. Nous n'aurions pas à écrire toutes les revendications manuellement et à construire tout cela. Le fait est que ce que nous avons fait lorsque nous avons créé nos propres revendications d'utilisateurs et notre identité principale, puis créé la vallée de l'argent des cookies. Cela serait probablement plus utile lorsque vous avez affaire à une application qui doit s'appuyer sur une authentification tierce. Et ensuite, il ne fait que transmettre les informations, puis nous pouvons construire l'argent de nos réclamations utilisateur pendant leur vente. Comme si nous avons affaire à JWT ou à la tierce partie, c'est à ce moment que nous aurions besoin de faire tout cela. Nous examinerons des scénarios similaires plus tard dans le cours. Donc, vous savez, nous sommes en train de passer à la vitesse supérieure pour voir l'ensemble de l'ASP.Net Core traite de l'authentification et de l'autorisation. Donc, les marches de bébé, les écrous et les boulons. Mais à ce niveau, nous voyons comment le faire manuellement. Ce que nous allons donc faire ici, c'est créer de nouveaux projets. Maintenant, c'est plutôt comme un spectacle. Vous pouvez suivre ce que je fais. Mais c'est facultatif car nous continuerons d'utiliser nos sites Web de petites annonces initiales. Mais ici, je vais vous montrer comment vous seriez en mesure d'intégrer l'authentification, l' autorisation, toutes ces choses dans le projet dès le départ. Donc, si vous deviez créer un nouveau projet et que vous choisissez votre projet Web SBA.Net Core, un nouveau projet fonctionne encore une fois, qu'est-ce que le web up ou le MVC ? Tous les deux auront un VC et sont répertoriés ici quelque part dans la liste, mais ils utilisent les pages du rasoir ou le MVC qui s'y trouve. Ce serait le même principe. Sachez que quand vous passez en revue, vous le donnez et je vais juste lui donner le nom simple auth up. Et cliquez sur Suivant sur ce vert, vous aurez la possibilité de modifier le type d'authentification. Donc, les petites annonces à savoir sont non sélectives et par défaut ce ne sera pas le cas, non désolé. Mais si vous disiez des cônes individualistes, cela vous enverrait automatiquement certaines choses qui facilitent l'identité dès la sortie de la boîte sont l'authentification, l' autorisation, toutes ces choses prêtes à l'emploi. Vous remarquerez également que vous disposez de toutes les options, vous disposez de la plateforme d'identité. Dès le début, il vaut la peine de parler d'ajouter une autorisation tierce à l'aide de Microsoft, Facebook ou Google , et cetera, avec cette boîte automatique prenant en charge celle de Microsoft. Ensuite, nous avons des fenêtres qui seraient plus comme si vous utilisez Active Directory. Et vos utilisateurs devaient s'authentifier simplement en se trouvant sur le réseau. Ce serait donc un sujet pour un autre cours ou plus tard. Nous pouvons donc voir des cônes individualistes. Ensuite, nous allons simplement de l'avant et cliquez sur Créer. Une fois ce projet créé, nous pouvons prendre note de quelques éléments supplémentaires dans ce modèle qui ne sont pas dans nos modèles de classificateurs, n'est-ce pas ? Je vais donc les avoir côte à côte pour que vous puissiez voir ce que je veux dire. En termes de données, nous disposons donc d'un dossier de données. Lorsque vous n'incluez pas d'identité, ce dossier de données ne s'affiche pas directement. En connaissant ce dossier de données, vous avez automatiquement des migrations et des contextes DVI d'application. J'ai donc un projet de données dans lequel j'aurais en quelque sorte construit ces choses, non ? Nous avons donc des migrations, nous avons les contextes de base de données d'applications. Bien sûr. Mais si vous regardez dans les contextes DVI de cette application, vous remarquerez quelques choses différentes. Un boulonné. Il hérite des contextes DVI identitaires par opposition à celui que nous avons, qui ne sont que des contextes DVI. contextes DVI lui confèrent donc une connexion à Entity Framework Core. C'est très bien. Très bien, il sache qu'il s'agit de la base de données Entity Framework. Le noyau est ce que nous utilisons. Blablabla, quel que soit l'identité des contextes DVI, étend les contextes DVI et ajoute les tables liées à l'identité , sort de la boîte. Ainsi, les tables liées aux identités, que nous verrons dans quelques exemples, incluent des tables pour stocker des rôles, des informations sur les lignes, désolé, informations sur les utilisateurs, les revendications, toutes ces choses. Toutes ces tables seront générées en même temps la base de données une fois que nous utiliserons cette application, les contextes VB. Très bien, aucun contextes DB d'identité ne peut être étendu car vous avez des surcharges différentes, ce sont des choses différentes que vous pouvez mettre en saké et insérer comme une classe personnalisée pour l'utilisateur, une classe royale personnalisée et une clé personnalisée. Prêt à l'emploi, nous avons un utilisateur d'identité. Ainsi, cet utilisateur d'identité de classe représente cette entité tête rouge. L'utilisateur présente la classe d'utilisateurs par défaut fournie avec des identités. Donc, utiliser des lots de contrôle et ajouter une déclaration, n'est-ce pas ? Vous avez un rôle d'identité, qui est également prêt à l'emploi lorsqu'il s'agit d'identité, vraiment de soi. Et puis la clé ici signifie quel type de données dois-je utiliser pour générer la valeur de clé ? Donc, dans certains cas, ou par défaut, est plutôt livré avec une chaîne, n'est-ce pas ? Il aurait donc de bonnes valeurs comme clés pour ces deux tables par défaut. Mais si vous vouliez utiliser des entiers, alors vous pouvez décider d'int. Vous indiquerez donc les contextes DVI et il y a quelques autres configurations qu'ils doivent mettre en place en cours de route. Mais une fois que vous souhaitez modifier ce type de données, vous pouvez le faire. Montrer votre flexibilité c'est, mais une fois que je sortirai de la boîte, ce sera de la chaîne. Je n'ai pas remarqué que ça va cesser de se terminer. J'essaie donc de les réduire tous à des personnalisations à ce stade. Donc, lorsque nous laisserons cette valeur par défaut, elle ne se plaint pas. Et même si nous ne l'avons pas qualifié avec tout cela, ce sont les valeurs par défaut de toute façon, dans le fichier CSS de démarrage point, vous verrez également que tout cela sort de la boîte. Donc sans ajouter d'identité, cela aurait été tout ce que nous avons vu dans l'adresse du fichier de démarrage, n'est-ce pas ? J'ai donc dû l'ajouter manuellement avec notre startup. Cela a été ajouté manuellement. Mais vous voyez ici, dès l'emballage, nous avons obtenu le contexte DB avec une chaîne de connexion par défaut. Et il ajoute également l'identité par défaut avec certaines options et indique qu'elle utilise Entity Framework comme magasins. Très bien, donc je suis définitivement en train de modifier la boîte. Toutes ces choses sont en quelque sorte câblées. Une autre chose dont nous pouvons prendre note est dans le dossier migrations, dans le dossier de données, nous verrons que nous sortons de la boîte avec une migration. Et cette migration crée toutes les tables nécessaires à l'identité. Donc, les intégrales ISBN, c'est là que les règles seront stockées. Utilisateurs du réseau SBI. Veillez à ce qu'il sort de la boîte avec toutes ces colonnes. Non, la classe que j'avais montrée sait juste qui est l'utilisateur d'identité. Cette classe donne un accès automatique à tout ce qui se trouve dans cette table des utilisateurs AT. Par défaut, tout objet utilisateur d'identité aura des propriétés. Je ne fais que cliquer sur le contrôle pour voir si je peux entrer, voir la définition de cette classe. Et on y va. Je contrôle juste le clic. Permettez-moi de revenir en arrière et de vous montrer, il suffit de cliquer en maintenant la touche Contrôle enfoncée, puis de cliquer sur Contrôle sur l'utilisateur d'identité par rapport à la chaîne. Et cela nous permettra de voir tous les champs qui s'y trouvent. Ce sont donc tous les champs IDE et normalisent l'e-mail, le nom d'utilisateur, le mot de passe, le mot de passe, le hachage. Tous ces champs correspondent à la table des utilisateurs ASP NET. Vous n'avez donc pas besoin d'écrire un code excessif pour pouvoir accéder à ces champs. autres tableaux incluent des revendications de rôle. Nous avons donc une idée de ce que sont les revendications. Nous ne savons pas nécessairement quelles sont les règles, moins pas dans le grand schéma des choses. Mais fondamentalement, vous pouvez attribuer des réclamations par le biais de règles, également les revendications des utilisateurs, nous savons ce que c'est. Vous pouvez donc les stocker dans la base de données plutôt que de les créer manuellement. Lorsqu'une personne se connecte, elle est stockée dans la base de données et automatiquement chargée dans un cookie après l'authentification de l'utilisateur. Rouge, nous avons un ISBN à la connexion utilisateur. Ainsi, celui-ci peut suivre les fournisseurs tiers que les utilisateurs peuvent utiliser ou les cônes qui leur sont associés pour accéder à votre site Web. Nous avons des rôles d'utilisateur de cacahuètes. C'est donc dire : Qui sont les utilisateurs, quelles sont les règles, et quelles sont les règles de cette FIAS ? Il s'agit donc d'une table de liens plusieurs-à-plusieurs entre la table des utilisateurs et la table de rôles. Tolkien, celui-ci est, si nous utilisons la référence Tolkien, que nous examinerons plus tard. Donc je vous montre juste ça hors de la boîte et récupérez toutes ces tables. Vous n'avez pas besoin de la construire de la neige. Encore une fois, si vous possédez déjà votre magasin d'utilisateurs ou si vous effectuez déjà votre propre authentification, mais que vous souhaitez étendre vos données pour utiliser l'identité pour gérer ces identités très flexibles et extensibles et peuvent être utilisées. À cet égard, mais cela ne fait pas partie de ce cours, car nous essayons de comprendre les bases nécessaires pour obtenir l'authentification dans notre application ici. Très bien, alors lorsque nous reviendrons, ce que nous allons faire est d'ajouter l'authentification à notre authentification appropriée, notre identité, à notre application existante. Donc, tout en haut de la boîte, nous aurions pu simplement dire, laissez-moi désoler, laissez-moi passer au fichier IN de l'application settings.js. Donc, cette base de données aurait été appelée ainsi, n'est-ce pas ? Donc, dans toute la boîte, laissez-moi simplement faire ça et nous pourrons passer à la leçon suivante. Si je dis mettre à jour la base de données de tirets, ce que cela fera, c'est de la laisser générer la migration associée à la base de données ou la migration qui est sortie de l'emballage. Et quand nous aurons cette base de données, et dès que c'est fait, je peux maintenant accéder à toutes les tables que nous venons de voir dans le fichier de migration, n'est-ce pas ? Donc, si je devais exécuter cette application, vous voyez que nous obtenons la même plaque de cuisson et, dès la boîte, nous obtenons un registre et des liens de connexion. Je ne les ai donc pas créés cette fois. Nous l'avons fait manuellement avec des classifications, mais les voici. Et si je clique sur S'inscrire, vous voyez que ce n'est pas le cas, mais que dois-je enregistrer correctement ? Créer nos cônes, envoyer un e-mail, entrer un mot de passe, confirmer le mot de passe. Si je me connecte, vous voyez que nous avons une connexion. Ensuite, il nous permet de savoir comment nous pouvons probablement aller sur un bateau assis, moniteurs de connexion externes externes ou des services d'authentification, comme ce que nous avons regardé. Je ne fais que te montrer ça. Oui, nous avons fait tout cet argent sauvagement. Nous voulions juste voir comment tout est branché. Null. Nous savons comment le faire immédiatement si je m'inscris bien, non. Et je vais juste choisir un mot de passe fort que nous avons suggéré, si je fais le registre, qui ira réellement dans la base de données. C'est vrai. Et tout cela avant cette combinaison sont classés comme nous le faisons en plus d'une base de données stockant les utilisateurs, c'est pourquoi nous n'avons pas encore d'enregistrement. Mais je peux mettre une conformation pour que nous regardions comment envoyer réellement un e-mail, mais ils simulent ce qui confirme le flux de travail de messagerie juste là. Et ensuite, si je reviens me connecter en dehors du navigateur en me souvenant des choses, parce que ce n'est vraiment aucune caractéristique de l'identité. Mais si je saute à la table des utilisateurs et que je consulte les données, vous verrez qu'il n'y a pas d'utilisateur stocké, n'est-ce pas. Et c'est à quoi ressemble ce rôle. Et regardez ce mot de passe. N'oubliez donc pas que nous utilisons un mot de passe en texte brut lorsque nous avons créé notre propre de passe, bien sûr, tabou dans la base de données. Il serait automatiquement haché grâce à notre service d'identité. Il s'agit donc d'un outil prêt à l'emploi très puissant et nous allons nous amuser beaucoup à regarder les notes, le bol, donc tout est configuré et comment maximiser notre sécurité utilisant les fonctionnalités prêtes à l'emploi de Microsoft. Il suffit donc d'une connexion de test supplémentaire. On y va. Donc exactement ce que nous avons fait, tout cela. Je n'ai cependant pas écrit de code ouvert, et j'ai déjà un système de connexion entièrement fonctionnel qui est déjà sécurisé car mon mot de passe est éteint et je peux facilement commencer à ajouter une autorisation n'importe où. Et ça va marcher. Donc, pas de retour, nous verrons comment si nous avons déjà créé nos projets, sainte, insérez cette fonctionnalité dans ce projet. 9. Ajouter de l'identité à un projet existant: Très bien les gars, maintenant que nous savons immédiatement ce que nous obtenons avec cette entité et nous avons une meilleure compréhension de son fonctionnement. Commençons par moderniser notre application pour utiliser les bibliothèques qui sont à notre disposition. Donc, certaines de ces choses, je suis juste plissée et j'emprunte littéralement à ce qui a été généré avec le serment du score de la boîte si nous avions activé cette entité à partir de la balle de départ, bien sûr, j'expliquerai ce qui se passe au fur et à mesure que nous comprenons Qu'est-ce que chaque ligne, quatre, n'est-ce pas ? Nous avons donc déjà notre contexte DB et nous savons que nous utilisons notre connexion à la base de données, c'est très bien. Cependant, ce que nous devons ajouter, c'est l'outil Identity, toute cette portée. Je vais donc passer au contexte DB et je vais lui faire savoir que je ne veux plus que vous utilisiez simplement le contexte DB et que je voulais utiliser des contextes de base de données d'identité. Rappelez-vous donc que les contextes DVI d'identité sont ce qui nous permet d'utiliser toutes les boîtes, les différentes tables que nous pouvons obtenir. Je vais donc aller de l'avant et inclure le paquet est un point d'identité de base EF Core. Et je l'ai laissé trouver installer le dernier compartiment. Et une fois ce péché, toutes les lentilles rouges apparaissent et tout semble comme avant. Jolie et facile, non ? Donc non, nous aurons automatiquement accès à ces tables. heure actuelle, dans la classe de démarrage, nous devons lui faire savoir que nous voulons utiliser l'identité par défaut. Nous allons donc voir services points d'identité par défaut et toutes les classes que vous pouvez utiliser sont différentes. Azure AD Identity, Identity core et vous disposez également d'une identité par défaut. Par conséquent, la différence entre eux est que lorsque vous dites ajouter une identité par défaut signifie tous les paramètres par défaut, veuillez les placer là. Vous pouvez devenir très granulaire et dire ajouter une identité, puis ajouter ce que vous voulez et vous partirez un moment que vous ne voulez pas. Et franchement, je pense que c'est beaucoup plus de travail qui doit se produire. Je comprends pourquoi il a été inclus, mais pour des raisons de simplicité, et franchement une grande partie de la boîte, c'est variable plein. Je vais juste conserver les valeurs par défaut. Je vais donc dire ajouter une identité par défaut et nous utilisons Identity User. N'oubliez pas que nous avons examiné cette entité utilisée comme classe d'utilisateurs par défaut qui représente la table utilisateur. Après cela, nous voulons trouver quelques options. Vous pouvez donc ajouter des options pour voir comment nous voulons gérer le mot de passe. Nous voulons donc faire face aux exigences de connexion, n'est-ce pas ? Je peux donc simplement mettre cette expression lambda. Et permettez-moi de mettre cela dans un objet car nous pouvons avoir plusieurs options sur un bloc d'objets. Et puis je peux commencer à pêcher des adoptions. Mais avant cela, je veux résoudre ce problème, j'ai donc besoin d'une bibliothèque et je remercie de le faire passer par le point de contrôle. C'est très bien. Ce que je vais faire, c'est sauter sur notre gestionnaire de paquets NuGet et je vais chercher Microsoft .NET Core identité avec Microsoft .NET. Très bien, c'est ce qui nous donne les valeurs par défaut sont l' interface utilisateur intégrée des pages Razor pour le framework Entity Framework de chlorure. Comme je le disais, lorsque nous ajoutons une identité par défaut, certaines choses sortent de la boîte pour nous. L'interface utilisateur en fait donc partie. Je vais donc aller de l'avant et obtenir cette version. Et je vais juste passer au fichier CSS juste pour m'assurer qu'il n'est pas ajouté. Maintenant, il y a une chose à 0 à moi ici, et cela a été le fait de nombreuses frustrations dans les cours précédents et même dans mon travail. Si les versions ici ne font pas grand-chose, vous risquez d'obtenir des erreurs sur des erreurs inexplicables. Avec échafaudage. échafaudage génère des fichiers ou génère des vues. Affichages dans les mécanismes automatiques de Visual Studio et du framework. Si ces versions se situent entre les bibliothèques d'authentification et les bibliothèques Entity Framework, vous rencontrerez des problèmes, n'est-ce pas ? Donc, parfois, vous avez peut-être 0,09 ou du moins au moment de cet enregistrement, point 0100 est élitiste, n'est-ce pas ? Mais si vous en avez un qui n'est pas 0.10.9, cela pourrait provoquer des niches. Donc, quand nous y arriverons, si nous avons un AC, nous allons le réparer. Mais d'une manière générale, elle concerne tout ce qui est lié à l'authentification ou à Entity Framework. Tous doivent être les mêmes versions. Très bien, donc ce point d'information ici. Nous pouvons donc maintenant confirmer que notre nouvelle bibliothèque est ajoutée si nous revenons à notre startup déposée et que nous constatons que notre erreur s'affiche. Apparaît et c'est bien. Très bien, supprimez ça plus tôt. Je m'excuse. C'est à ça que devrait ressembler votre ligne, n'est-ce pas ? C'est donc spontané, alors quelles options avons-nous ? Nous avons donc le PaaS ou l'adoption d'options de connexion, d'options utilisateur pour le mot de passe. Nous pouvons spécifier que nous voulons avoir besoin d'un chiffre. Donc oui, nous voulons exiger un chiffre, vrai, non ? Nous pouvons donc définir la chaîne de mot de passe de la barre ici, et cela sera global. Combien de personnages voulons-nous ? Le minimum veut peut-être 7 ou 7, je pense que c'est une norme. Encore une fois, les règles métier diffèrent. Nous avons besoin de minuscules. Est-ce que nous avons besoin de non alphanumériques ? Est-ce que nous avons besoin de majuscules ? Toutes ces choses ? Même si nous ne spécifions pas ces options bien que toutes les cases, vous aurez besoin d'une lettre majuscule. Vous aurez besoin d'un caractère spécial et vous aurez besoin de ce chiffre. Et le mot de passe doit être minimal. Je pense que huit personnages, c'est tout ça hors de la boîte. Donc même sans devenir granulaire, comme ce que nous faisons ici, ce serait leurs bateaux sortis de la boîte, non ? Je vais juste vous montrer que tous ces éléments nécessitent des majuscules. Et je pense que c'est nécessaire non alphanumérique, c'est vrai. Très bien. Je vais dire à la boîte que c'est ce que vous obtenez. Et bien que l'option qui pourrait être utile serait la possibilité exiger une confirmation lors de la connexion. Donc, les options de connexion requises, j'ai reçu une confirmation. Si vous survolez, il vous indique qu'il possède cet indicateur qui indique qu'il est confirmé ou non. Vous savez donc, comme lorsque vous vous inscrivez à nos sites Web et qu'ils disent s'il vous plaît confirmer le miracle avant qu'il ne puisse aller plus loin jusqu'à ce que vous le fassiez, vous ne pouvez pas accéder au site Web ou c'est ce que cela apporte à la table. Nous allons donc mettre en place ce mécanisme de messagerie électronique pour envoyer l'e-mail une fois qu'une personne sera inscrite à l'application. Donc, en faisant tout cela, nous allons examiner une autre chose avant de procéder à une migration, puis de nous étouffer ou plutôt de générer les tables. Et c'est l'extension des utilisateurs d'Identity. Nous avons donc vu les colonnes et encore une fois, si vous voulez savoir quelles colonnes il y a, vous pouvez simplement appuyer sur F 12 ou cliquer en maintenant la touche Ctrl enfoncée, puis F2 à nouveau, puis vous verrez quelles sont les colonnes. Eh bien, vous remarquerez qu'il s'agit de valeurs par défaut. n'y a rien de terrible chez FirstName, LastName, savoir, rien de personnel, rien d'information personnelle. Pebble l'utilisateur. Donc, d'une manière générale, quel que soit ce que vous vouliez stocker des utilisateurs, vous voudriez les stocker. qui signifie que nous devrions étendre cette table des utilisateurs d'identités pour stocker plus de choses. Donc, ce que vous finiriez par faire, c'est peut-être créer une nouvelle entité. Et je vais juste dire une nouvelle classe dans l'écurie de l'entité. Vous pouvez stocker, créer une classe appelée n'importe quoi. Quelqu'un dira généralement utilisateur de l'application, vous pouvez le voir utiliser contre un utilisateur de l'entreprise. Parfois, vous avez différents types d'utilisateurs avec des champs différents, n'est-ce pas ? Il se peut donc qu'un responsable dispose de points d'information différents de ceux de notre utilisateur habituel, etc. Ça dépend donc, non ? Les enseignants de School of Management System, étudiants comme cetera, sont tous des utilisateurs mais avec des points de données différents, mais en fin de compte, vous les souhaitez tous dans la même table. Donc, ce qui peut être porté ici avec cette classe peut l'appliquer à de nombreux autres cours. Donc, si je venais de dire utilisateur, et c'est évidemment ma classe d'utilisateurs personnalisée. Et puis pour dire utilisateur public, je peux savoir qu'il hérite de l'utilisateur d'identité. Donc, un à peu, héritez de l'utilisateur d'identité. Il va automatiquement supposer tous les champs disponibles par l'utilisateur d'identité. Ensuite, je peux en ajouter encore plus. Et si je voulais dire ajouter une nouvelle propriété de temps de bit pour obtenir mon orthographe correcte. Et ce serait la date de naissance. Très bien. Je veux donc que mon employé ou mes utilisateurs me disent leur date de naissance. Que faire si je voulais un prénom et un nom de famille ? Ce sera donc une chaîne, FirstName et String ainsi name. Très bien, quoi que ce soit que je veux, je suis comme je disais, vous pouvez avoir plusieurs utilisateurs, donc c'est C, l'adulte de pieu, il suffit d'utiliser beaucoup si nous avions un enseignant et un élève du système de gestion scolaire, n'est-ce pas ? Donc, un étudiant aurait probablement comme un rendez-vous inscrit, enseigner, je serais fatigué un jour, et cetera. Les différents points de données se rapporteraient donc aux différents utilisateurs. C'est un sujet pour un autre cours, mais c'est encore une fois une sorte d' extension qui prendrait un peu plus de finesse dans la configuration. Si aléatoire, je vais simplement garder les choses simples et avoir ma classe d'utilisateurs personnalisée, qui a les champs personnalisés. Maintenant, une fois que je souhaite utiliser cet utilisateur personnalisé après le contexte DB, sachez que vous n'utilisez pas l'utilisateur d'identité par défaut. Alors n'oubliez pas que lorsque nous examinons le projet précédent, nous pourrions venir ici et le dire à l'utilisateur d'identité. Mais par défaut, il connaît actuellement cet utilisateur d'entité que je voulais utiliser. Ainsi, en assistant aux contextes DVI d'identité par rapport à l'utilisateur, il saura, regarder le fichier utilisateur comme un point de référence, ce qui colle cette entité utilisateur. Et puis certains, n'est-ce pas ? Donc, si je n'avais pas cet héritage, j'obtiendrais une erreur ici. Parce que le contexte de base de données d'identité attend quelque chose de type utilisateur d'identité, n'est-ce pas ? C'est pourquoi vous constatez cette erreur là. Vous devez donc vous assurer que cet héritage se produit. C'est donc ça. Nous verrons que c'est quelque chose de différent du type recherché. C'est donc comme ça que vous pouvez ajouter un champ personnalisé, nos champs personnalisés à la table des utilisateurs. Mais vous ne souhaitez pas nécessairement supprimer champs si vous n'utilisez pas l'aide des champs ou n'utilisez pas les champs. Mais tous les domaines qui y sont placés ont un but précis, n'est-ce pas ? Donc, au bout du compte, nous, je pense que cette configuration est suffisante pour l'instant, passons par-dessus et ajoutons une nouvelle migration. Donc, lorsque nous effectuons nos opérations de migration, nous devons voir la migration. Identités ajoutées. Tables, donnez-nous l'orthographe ? Ensuite, vers Tables. Et puis, bien sûr, après avoir modifié les projets par défaut qui vont de l'avant et générés. Très bien, je reçois une erreur très méchante ici. Et si vous avez suivi l'un de mes cours pour le faire, je n'hésite pas à m'éloigner d'Aras. Je vous montre les erreurs, donc je pense que nous manquons la configuration. Et j'ai tout à fait raison. Permettez-moi donc de corriger cela. Nous pouvons donc voir ici que nous devons utiliser le magasin de données, donc j'ai raté cette étape. Donc, après avoir ajouté l'identité par défaut et configuré toutes les options, nous devons dire ajouter. Les valeurs par défaut sont un magasin Entity Framework étrange, il sait donc qu'il doit être utilisé dans le contexte de base de données d'application pour stocker ces tables. Donc, je pense que cette flèche était tout en voyant que je suis très confuse. Rant Nulla. Je sais que je devrais être identité. Je sais que je devrais être quelque part, mais je ne sais pas où mettre mon calme, Fred. Et pendant que nous sommes ici, un autre changement majeur dont nous devons tenir compte est que nous devons savoir tout changer en fonction des contextes de notre classe d'utilisateurs de coûts, n'est-ce pas ? Nous ne pouvons donc pas utiliser d'utilisateur d'identité ici, mais destinés à des contextes BB, ces identités sont donc tout à fait uniformes. Donc, l'utilisateur et allez de l'avant et ajoutez l'instruction use pour cela. Parce que nulle part ne fait tout dans le contexte de notre coût sur la classe d'utilisateurs. Maintenant, après avoir fait ces Suchi et est-ce que cela entame à nouveau la migration publicitaire ? Et cette fois, je reçois de nouvelles erreurs. Cela me dit donc que la création non modèle a un problème. Une fois de plus, je fais passer toutes les motions parce que parfois vous manquez un pas et cela a un effet d'entraînement sur l'erreur ne vous dit pas forcément quel est le problème, n'est-ce pas ? On voit donc généralement que l'une des tables nécessite une clé primaire, quelque chose, quelque chose, quelque chose qui a un rapport avec le contexte DB. Et ce que nous n'avons pas fait, c'est d'utiliser la base sur la création de molal pour ModelBuilder. Très bien, donc c'est simplement voir la force. Qu'est-ce qui va monter sur la plage avant même de commencer à faire ce qui est censé arriver lors de la mise en œuvre, n'est-ce pas ? Donc, une ligne est absolument nécessaire à l'identité ancestrale, n'est-ce pas ? Ce n'était donc pas le cas avant, c'est nul. Je vous montre donc toutes les petites nuances qui permettent ajouter de l'identité à un projet existant. Donc, si nous essayons encore une fois, nous aurons du succès. Très bien, j'ai pris quelques essais, mais nous avons vu ce qui peut mal tourner en cours de route. Et chaque fois que nous faisons cela, il devrait s'agir d'une expérience d'apprentissage afin que nous puissions comprendre ce qui se passe. Donc non, nous voyons que nous avons une migration qui entraîne les mêmes ensembles de tables que ceux que nous venons de voir dans le fichier de migration Box. Mais nous savons que nous avons des colonnes personnalisées dans nos utilisateurs ASP NET. Nous avons des dates de naissance, FirstName, LastName, ainsi que tout ce qui aurait été hors de la boîte avec cet utilisateur d'entité. Très bien, c'est ainsi que nous pouvons ajouter de nouveaux champs à nos tables. Il suffit de créer une nouvelle classe. Allez-y et étendez la classe. Donc, dans ce cas, il s'agissait des utilisateurs d'ASP NET. Parfois, vous voudrez peut-être quelque chose de plus pour la table des rôles en essayant de trouver les lignes toutes héritées qui se trouvaient en haut à droite. Tout ce que nous avons, c'est le nom, le nom normalisé sur ce système simultané. Parfois, vous voulez étendre cela pour quelque raison que ce soit, ce sera le même principe. Il suffit d'aller de l'avant et de l'étendre. Ensuite, au démarrage, vous pouvez spécifier une identité par défaut avec les différents types. En fait, ce serait ici si nous devions ajouter les règles personnalisées. Donc, ce ne serait pas le cas. Donc, en fonction du type de bibliothèque utilisé ici ou de la méthode d'extension de service utilisée ici. Vous pouvez l'ajouter. Vous ne pourrez peut-être pas le faire, dans ce cas, ce n'est pas là où il en est. Si nous utilisons IDE Identity Core, nous aurions pu l'étendre pour voir les virgules de l'utilisateur, client ou l'identité par défaut AD. Vous devez voir une liste latérale, puis lui attribuer le nouveau type de rôle que vous souhaitez utiliser dans ce paramètre. Très bien, donc ce sont les petites nuances fur et à mesure que tout s'installe. Mais en fin de compte, nous avons fait notre échafaudage, désolé, notre migration, non, mettons à jour la base de données. Et c'est fait. Donc, la base de données simple de notre seule qui stockait simplement des informations classifiées est nulle, va être étendue dès FA, nous y allons. Et nous verrons que nous avons toutes ces tables comme nous l'avons vu dans notre projet précédent. Sachez donc que ce que nous devons faire est de terminer le câblage pour obtenir la page d'inscription sur la page de connexion sur toutes ces choses qui fonctionnent. 10. Mettre en place un enregistrement sécurisé - Partie 1: Très bien, les gars. La dernière fois que nous étions ici, nous étions en train de mettre en place nos tables d'identité où ils les ont étouffés, les ont générées dans une base de données. Nous devons maintenant configurer l'application sur null hole pour interagir avec la base de données pour une distribution à des fins de connexion. Ce que nous allons donc faire, c'est examiner comment le processus de distribution est sécurisé les week-ends. Et toutes les choses sont des nuances que nous devons prendre en compte. Donc, dans le fichier de démarrage, juste pour commencer, je vais supprimer cette authentification d'ajout parce que je n'en ai plus besoin. Je n'ai pas besoin de spécifier manuellement que j'ajoute un cookie et Crito kooky car l'identité créera le cookie automatiquement. Très bien ? Je peux donc simplement supprimer tout ça. Et nous pouvons commencer par ici. C'est vrai ? Deuxièmement, je n'aurai pas besoin de l'offre spéciale ou de l'offre personnalisée que nous avons créée, mais je ne suis pas encore linéaire avec elles. Avant cela, je veux que nous voyions comment générer des registres. Les âges sont plutôt enregistrés. C'est son déjà câblé pour regarder dans la base de données et interagit avec toutes les données partagées. Ce processus s'appelle donc échafaudage. J'ai beaucoup vu des échafaudages. Ainsi, lorsque nous allons sur les pages et que nous allons ajouter, nous pouvons chercher de nouveaux articles éraflés. Dans le nouvel article éraflé, vous verrez une catégorie indiquant l'identité et n'importe qui peut double-cliquer dessus. Et il analysera vos bibliothèques, assurez-vous que tout va bien. Ensuite, on nous présente cette boîte de dialogue qui dit : que voulons-nous faire ? Encore une fois, bien que la boîte. Nous obtenons la page d'inscription, nous obtenons la page de connexion. Nous les obtenons à y accéder via l'interface Web. Toutefois, les fichiers physiques ne sont pas présents. Donc, que vous ajoutiez une identité manuellement ou que vous choisissiez l'option de modification dès le départ. Cette étape est nécessaire si vous devez personnaliser votre page de connexion ou votre page d'inscription, ou simplement ajouter l'une de ces pages ici et l'une de ces pages. Vous verrez que nous pouvons simplement voir tous les fichiers parce qu'ils sont réellement là, mais ils ne sont pas physiquement accessibles. Cependant, Randall, je ne suis pas allé passer outre tout. Je vais juste m'en tenir à mes armes et je suis ici pour la page d'enregistrement. C'est donc tout ce que je veux vraiment faire face, non ? Null. Et ils lancent, nous pouvons faire la connexion et la déconnexion et confirmer l'ensemble correctement, je ne suis là que pour que le cône s'inscrive. Ensuite, je peux choisir que j'utilise mon contexte de données. Et il nous connaît déjà la musique, rien n'est incité ici, quoi qu'il en soit. Ensuite, je peux simplement cliquer sur Ajouter. Et une fois ce processus d'échafaudage terminé, vous verrez que nous avons un nouveau dossier appelé zones et zones où vous voyez les pages et pages d'identité et d'identité. Vous voyez ces fichiers. Et dans un cône, il y a ce que l'on veut vraiment qui est enregistré. Donc, autant de fichiers que vous auriez échafaudés, ils auraient été générés sans enchérissement placés le long cette structure complète et c'est un Lisez-moi qui n'a pas vraiment besoin de droit ? Non. Donc, juste un démarrage rapide du carburant. Il va juste dire quelle charge Fei Li Yuan vous pouvez réellement avoir plusieurs charges rapidement car chaque fois que vous avez un IRA ou une nouvelle zone, vous pouvez l'avoir. Utilisez une mise en page différente des risques du projet, n'est-ce pas ? Eh bien, nous lui demandons d'utiliser les mises en page générales qui se trouvent au niveau du projet partagé, au niveau des pages partagées du projet. Nous avons vu les importations. Nous avons également ce genre de normes. Donc, tout ce qui aurait été les pages standard est vrai. Il est disponible ici. Donc, c'est tout ce qui est le cas. Mais si nous regardons la page de démonstration du point de registre CSE, et de manière générale, même si vous utilisez un modèle de projet MVC a déjà fait sauter un projet, mais ces pages qui seraient étouffées à des fins d'identité seront généralement Razor pages, comme dans les pages HTML CSS, pages Razor avec le code derrière. Donc, même si vous utilisez une application MVC à ce stade où il s'agit définitivement de la pauvreté, tout ce que je vais faire est ce que vous allez vivre. Arrêt complet. Donc, la page de registre va avec le formulaire, à droite, Créer des cônes de New York. Et nous avons tous les champs et la section sur les bateaux, les connexions extérieures, tout cela est là. Si vous voulez le garder. Si ce n'est pas le cas, vous pouvez modifier ce fichier comme vous le souhaitez, bien sûr, dans la limite du fait qu'il reste fonctionnel. Très bien, laissez-moi tester toute la redistribution. Je ne vais pas trop entrer dans la lourde explication sur la façon dont tout est branché en ce moment, je voulais juste m'assurer que cela fonctionne. Donc, dans notre login partielle, sachez que nous avons la page d'inscription. Je vais lui dire où pointer. Donc, cette URL va finir ou non une balise d' ancrage va plutôt finir par ressembler à ceci. Donc, le lien de navigation de classe de balise d'ancrage, c' est-à-dire que la flèche B est l'identité, non ? Ce sont donc les identités éros. nom de la zone est zone de tiret B et SDS-PAGE est un registre oblique oblique. C'est donc là que je veux que ça aille chaque fois que quelqu'un vient à l'application. Alors, inscrivez-vous. Alors prenons ça pour faire un tour. Donc, sur cette page, nous avons cliqué sur Register, et nous y allons. Où sur la page d'inscription. N'oubliez pas que nous avions autorisé toutes les choses dans notre application. Cela signifie simplement que vous enregistrez le serment de la peau en vrac avec une faible inondation anonyme juste au-dessus de celle-ci. C'est vrai ? Une fois de plus, nous allons entrer dans les détails de ce qui se passe en coulisses en ce moment. Je voulais juste tester des tests distincts. Donc, test d'administrateur. Laissez-moi voir si je peux le faire. Ok, donc mon mot de passe habituel est P at San ss WW déjà voulu. Cependant, je voulais mettre un mot de passe faible et voir ce qui se passe. Je vais donc juste mettre le mot test. Vous voyez ici qu'il doit comporter entre six et un maximum de 100 caractères. Il y a donc une validation automatique. Pas nécessairement à cause de la politique que nous avons mise en place, mais à cause du trou de la page elle-même, bien que les boîtes aient été conçues. Donc, c'est très bien. Je vais juste utiliser mon long mot à la mode spécial. Et puis le deuxième mot à la mode. Très bien, donc je vous montre simplement ce qu'il faut sortir de la boîte juste en générant la page de registre. Toutes ces règles sont déjà appliquées pour nous. Ensuite, quand je frappe Register va nous apporter tous comme adopter confirmer le registre 0 page que j'ai mentionnée. Simulation de l'envoi de l'e-mail pour nous aider à nous inscrire. Alors, allez-y et confirmez les cônes. Mais comme tout cela n'a pas été fait, passons à la base de données et voyons si cela a fonctionné. Donc, dans la base de données, je viens de m'inscrire, je devrais savoir être dans la table des utilisateurs d'ASP NET. Et si je consulte les données de la table, vous verrez ici l'e-mail de test de l'administrateur. Mon mot de passe a été éteint. Donc cela ne semble pas que le mot de passe que j'ai tapé dans P à San SS, ils seront OID un. Et regardez ce que nous avons obtenu. Oh, c'est hors de la boîte, non ? Je suis également un utilisateur confirmé. Merci à la simulation. Mais qu'est-ce que le Nord-Est vous remarquerez que nous avons les champs personnalisés, date de naissance, le nom complet, le nom de famille. Ils sont tous vierges. Elle. Et il semble que j'ai utilisé le mauvais type de données sur le nom de famille et je l'ai fait. Et vous pouvez me corriger. Oh, je suis désolé à ce sujet. Mais ce que je veux dire, c'est que le registre fonctionne. Tout cela est câblé. Nous n'avons fait que très peu de choses pour le faire fonctionner, n'est-ce pas. Donc, ce que je vais faire, c'est supprimer cela uniquement parce que j'ai utilisé le mauvais type de données pour le nom de famille. Je vais donc simplement supprimer ce champ. Je vais faire une nouvelle migration et je suis allé voir le champ de nom de famille fixe. Vous n'êtes probablement pas obligé de le faire parce que vous avez probablement vu mon erreur avant que je ne l'ai commise. Si ce n'est pas le cas, c'est très bien. Je fais juste ça pour que je puisse m'assurer que tout va bien. Donc, vous voyez ici, j'ai modifié la classe d'utilisateurs, en ajoutant la migration. Il effectuera les mises à jour. Et puis je peux simplement mettre à jour la base de données. Il va donc mettre à jour ce type de données pour moi en conséquence. Bien. Nous savons maintenant que notre page d'inscription fonctionne et c'est très bien. C'est donc la première étape terminée. Lorsque nous reviendrons, nous examinerons davantage un bateau ou un processus de distribution et verrons quelle autre considération est prise en compte. Nous regardons donc Won, ce que le code fait réellement dans le, dans le code derrière le fichier. Comment l'étendre pour prendre en charge réellement les champs supplémentaires que nous avons ajoutés. Et nous parviendrons à une compréhension complète de ce qui se passe exactement en général. 11. Mettre en place un enregistrement sécurisé - Partie 2: Salut les gars, bienvenue. Avant de passer à l'ensoleillement, tout ce qui concerne une page de registre, je voulais juste souligner que si vous utilisez une application MVC et qu'il pourrait y avoir un thème supplémentaire à faire pour obtenir votre URL. voir le pH à l'intérieur des zones, n'est-ce pas ? Donc, dans la startle vue par défaut, il a eu sur les points de terminaison, puis c'est tout, points de fin sur le contrôleur MAC. Et ensuite, vous avez les routes et tout. Vous devez vous assurer que vous avez des points de terminaison, une vadrouille, augmenter le pH c'est toute l'âme. Donc, si vous utilisez un MVC en haut d'une ligne qui indique la racine du contrôleur de points de terminaison. Ensuite, il est spécifié comme modèle, crée une nouvelle ligne et place les points de terminaison vers les pages de résultats de la vadrouille. Et une autre chose que vous voudrez faire est de vous assurer que vous avez des services, des artères des pages. Vous aurez probablement déjà des services. Le contrôleur va fusionner, n'est-ce pas ? Oui. C'est probablement ce que vous avez, n'est-ce pas ? Null. Supposons que vous vouliez vous assurer que vous avez des pages Razor. C'est donc l'autre défi que vous devez absolument relever pour que tout fonctionne. Donc, après avoir fait cela, si vous rencontriez des difficultés auparavant, vous devriez aller bien. C'est donc cela qui nomme une inflammation pour les personnes MVC. Non. Jetons un coup d'œil à ce qui se passe avec nos registres. Je vais donc fermer tout ce qui n'a pas à voir avec l'activité immédiate dans notre registre. Nous avions établi que cela fonctionne. Nous avons également établi qu'il ne demandait que l'e-mail, le mot de passe et la confirmation. Sachez qu'il y a un certain nombre de choses que nous pouvons envisager. Premièrement, vous remarquerez que l'utilisateur d'identité possède par défaut le champ de nom d'utilisateur. Il possède également un champ d'adresse e-mail, mais nous ne demandons que des e-mails. Si vous regardez l'utilisateur qui a été créé après notre inscription, vous verrez que nous ne sommes que deux. Désolé, je l'ai enlevé. Qu'est-ce que vous auriez remarqué ce nom d'utilisateur et ce courriel, mais les mêmes valeurs, n'est-ce pas ? Ou pour le voir valoriser, ce n'est peut-être pas forcément ce que vous voulez. Parfois, sur notre site Web, vous verrez un nom d'utilisateur différent de l'adresse e-mail. Et tout est différent de Lando et c'est très bien. Mais à ce stade, nous voudrions nous assurer que nous capturons tous les champs de la page d'inscription dont nous avons besoin. date de naissance est peut-être nécessaire. Prénom, nom de famille. Peut-être que le nom d'utilisateur est différent de l'adresse e-mail, bien sûr le mot de passe. Et puis vous voyez ici Oui, pour le numéro, c'est vrai. Peu importe ce dont vous avez besoin de la part de l'utilisateur, vous pouvez ajouter à l'inscription sur la plage. Disons donc que je voulais un e-mail. Je voulais aussi un nom d'utilisateur. Vous devriez donc vous familiariser avec les formes entières sont disposées ou les formulaires de trous fonctionnent dans les pages Razor. Donc, si vous avez ce modèle enregistré et que ce qui se passe, c'est que nous avons cet objet appelé artistes autre classe appelée input, qui va stocker les différents champs que nous demandons. Nous devons donc nous assurer que cette classe d'entrée contient tous les champs que nous demandons à l'utilisateur sur le formulaire. C'est pourquoi vous voyez utiliser l'éclairage EM parce qu'il ne demande plus de l'utiliser. Notre représentation n'est pas activée, hors du nom d'utilisateur, mais c'est très bien pour l'instant. Nous allons donc utiliser et aussi le mot de passe. Et je vais juste ajouter ces champs supplémentaires pour le prénom, nom et la date de naissance. Très bien, et pour la date de naissance, je vais spécifier que c'est le type heure, nos données plutôt, afin que nous obtenions ce contrôle de la fenêtre de couleur par défaut. Donc, en gros, c'est tout. L'ensemble que vous souhaitez étendre les champs qui se trouvent sur le formulaire. C'est la première étape. Vous allez représenter les champs que vous voulez correctement. Maintenant. La prochaine étape serait de faire en sorte que la classe d'entrées soit mise à niveau accidentellement afin que je puisse simplement contrôler le clic dessus, sauter sur les entrées. Nous voyons donc ici acheter une propriété dans les deux modèles. Cela signifie qu'il voit o-chem suivre les données placées dans les champs correspondants pour le modèle d'entrée, comme on le voit par les entrées de l'objet. Voici une définition du modèle d'entrée. Vous voyez donc tout ce que cela fait c'est d'envoyer le mot de passe par e-mail et de confirmer le mot de passe Les validations sont là, c'est pourquoi nous avons reçu ces messages de validation sur la longueur minimale du mot à la mode, n'est-ce pas ? Et le pied dont ils avaient besoin pour correspondre à toutes ces choses sont là hors de la boîte. Soul, si je voulais étendre cela, ce que je ferais, c'est de me laisser copier l'un d'entre eux qui sont là. Très bien, donc prénom, prénom, c'est nos nouveaux champs. Nom complet, prénom. Je n'ai aucune exigence de longueur et ce n'est ni un boss ni un type de données, donc je n'ai pas besoin de tout cela. C'est donc tout pour FirstName. Je peux dupliquer ça et le faire pour son nom de famille parce que ces deux-là sont à peu près la même chose, non ? Les deux sont obligatoires. Cependant, pour la date de naissance, peut-être que la date de naissance n'est pas requise, je vais donc inscrire la date de naissance, Poutine, le nom d'affichage. Mais ce n'est pas nécessaire et ce n'est certainement pas une grosse affaire s'il n'est pas fourni. Mais je vous montre simplement comment vous allongeriez ce verre. Sachez quand je retourne au formulaire ou que les lignes rouges ont disparu parce que non, ils voient les champs. C'est très bien. Maintenant, quand nous avons cliqué sur Enregistrer le cas, donc Nom d'utilisateur, OK, Nous levons tous les noms d'utilisateur. Laissez-moi m'assurer d'entrer un nom d'utilisateur. Et le nom d'utilisateur serait également requis. Et c'est là que cela pourrait devenir créatif. Vous pourriez dire que si vous voulez une utilisation différente d'un improvisé, sinon nous utilisons l'e-mail et il restera plat que vous puissiez obtenir de la créativité et des expériences. Et je pense que le filage que j'utilise pour le nom d'utilisateur est différent. On y va. Donc, lorsque nous cliquons sur le bouton d'inscription sur la page, ce qui se passe, c'est que ça va arriver. Donc, il charge la page. C'est très bien. Oh, ça marche. Et ensuite, vous verrez qu'ils ont différentes bibliothèques tierces ne sont pas des bibliothèques différentes qui sont injectées, comme le Gestionnaire de connexion, le Gestionnaire d'utilisateurs et l'expéditeur de messagerie. L'expéditeur devra virer l'argent sauvagement. Donc, plus tard, nous le ferons. Vous aurez également plusieurs livres sur bûcheron, c'est très bien. Mais entre le sable et le gestionnaire d'utilisateurs de surveillance, vous disposez de nombreux shuns de mousse puissants et fonctionnalités générales pour vous aider à manipuler toutes les opérations liées aux États-Unis. Laissons donc continentaux ce qui se passe sur les postes. Donc, à la poste, nous connaissons le retour que vous êtes avocat. Nous obtenons les connexions externes dont il n'y en a pas, n'est-ce pas ? Et n'avez pas non plus à vous inquiéter à ce sujet. Mais ensuite, nous procédons à la validation. La validation est relative à toutes les règles de validation ici, c'est très bien. Donc, s'il est valide, nous construisons notre utilisateur. Notez donc que nous voyons des utilisateurs var égaux à un nouvel utilisateur. Si nous n'avions pas précisé que nous utilisions une classe spéciale, cela aurait été un nouvel utilisateur d'identité, n'est-ce pas ? Ce qui fonctionnerait encore. Mais le fait est que nous serions limités aux domaines que nous pouvons et ne pouvons pas utiliser. Notez donc que nous utilisons la classe utilisateur, je peux dire quel est le nom d'utilisateur ? Voici pourquoi le nom d'utilisateur et l'e-mail ont la même valeur car, par défaut, vous devez fournir un nom d'utilisateur, vous devez fournir un e-mail. Et ce que fait le code par défaut, c'est définir l'e-mail comme étant les deux. Donc maintenant que nous avons étendu notre formulaire pour demander réellement un nom d'utilisateur, je peux savoir que le nom d'utilisateur est dans le nom d'utilisateur, e-mail est un e-mail d'entrée point. Et puis je peux le faire pour tous les autres domaines. La date de naissance, la date de naissance ne sont donc pas des intrants. Pensé à la naissance, etc. Donc je viens de faire cela pour le nom et prénom et la date de naissance, c'est une erreur parce que je l'ai dit, chaîne 1, ça devrait être ça. Après avoir effectué cet ajustement, nous pouvons simplement passer en revue l'ensemble de notre objet utilisateur. est donc ce que nous avons l'intention de stocker. Non, vous allez utiliser l'une de nos bibliothèques appelée User Manager. On y va Baco, c'est utilisé pour la mantisse et on y injecte. aimable autorisation de la bibliothèque d'identité IL-4, nous obtenons cet objet ou cette bibliothèque de gestionnaire d'utilisateurs qui a une fonction simple qui nous permet de créer, que créons-nous pour créer un utilisateur et nous leur donnons ce mot de passe. N'oubliez pas que nous aurions saisi ce mot de passe en texte brut. Mais au moment où cette méthode est terminée, elle l'aurait étouffée au point où elle serait complètement méconnaissable comme sur quel alpha, le même patron ou il aura toujours l'air différent dans la table parce que je suivi cette méthode hache la posture. hachage est donc une procédure très importante dans laquelle nous occultons la présentation du mot de passe pour le stockage. Et c'est toujours une opération unidirectionnelle, donc vous ne voulez pas utiliser de mots de passe hachés, vous avez haché des mots de passe, puis vous hachez une autre chaîne pour comparer avec le silence d'origine, n'est-ce pas ? Vous avez donc masqué un mot de passe. Et puis, quand la personne arrive à la connexion, vous masquez ce qu'elle a tapé et secoué les deux versions obscures qui se ressemblent. Si ce n'est pas le cas, cela échoue. Eh bien, vous ne voulez pas comparer ce qui est stocké dans la base de données. Très bien, le hachage est donc un protocole de sécurité très important qui cache les mots de passe. Très bien, donc après ceux-ci, cela peut ou non avoir réussi et si on disait qu'un résultat a réussi, alors il se connectera, d'accord ? Oui, c'est sympa. Et la connexion est très importante pour les applications ou outils basés sur la sécurité. sécurité de l'application. Vous verrez donc ce truc un peu plus tard. Qu'est-ce que ces derniers ont généré un code jeton. Non, nous pouvons modifier le gestionnaire Tolkien, ce qui signifie que nous pouvons utiliser notre propre corps car nous utilisons l'identité par défaut. Nous utilisons le moteur de jetons par défaut. Et ce Tolkien n'est fondamentalement que cette ficelle. Vous verrez qu'à la fin d'une URL, ils reçoivent cet e-mail de confirmation. Cliquez ici pour confirmer ou cliquez sur l'URL. C'est l'URL www_website.com slash cette longue combinaison alphanumérique. C'est ce que cela fait, c'est qu'il génère le code pour nous par rapport à l'inflammation fournie par l'utilisateur. Puis il l'encode, puis il envoie de l'art crée une URL. Donc, il est dit que l'URL de rappel est cette page, n'est-ce pas ? Et il ajoute ces valeurs à l'e-mail qui finira par être envoyé. Donc, comme je l'ai dit, nous allons brancher les dessus avec des expéditions de ce courrier électronique. Mais je veux que vous appréciiez tout ce qui se passe ici. Donc tout cela génère ce Tolkien pour vous. Ensuite, il envoie cet e-mail. Et puis si l'utilisation d'une signature d'options de points de gestionnaire nécessite la confirmation de nos cônes, alors il redirige vers ce battement. Remarquez donc que c'est une Piazza que nous n'avons pas créée, mais juste en ajoutant une identité par défaut, elle est devenue aussi grande, n'est-ce pas ? Nous ne l'avons pas créé, nous n'avons pas créé le sien. Nous n'en avons fait qu'une seule fois, mais une fois de plus, parce que vous avez ajouté une identité par défaut, cette interface utilisateur est impliquée dans notre projet. Ce n'est que si nous devons modifier quelque chose nous devons générer cette page physique comme nous l'avons fait pour l'enregistrement. Donc, non, il lira toujours Erich à ce rythme. Ainsi, lorsque nous avons configuré notre mécanisme d'e-mailing, nous pouvons simplement supprimer cette partie de celui-ci. Ensuite, nous pouvons simplement rediriger vers la façon dont nous pouvons vous connecter à la personne ou à l'autre, puis rediriger vers l'URL de retour. Cela signifie que si la personne était sur la page des catégories et qu'elle a cliqué sur s'inscrire, nous savons que l'URL de retour, nous savons comment cela fonctionne par null. C'est bon ? Mais le gestionnaire de connexion est une autre variable pour bibliothèque la plus proche de la connexion dans cet utilisateur, je décide que le gestionnaire crée réellement ce cookie, lui donne les revendications telles qu' elles sont stockées dans la base de données et authentifie cet utilisateur. tout à fait. Nous en constatons donc un peu plus lorsque nous entrons dans la partie connexion de nos activités. C'est donc essentiellement ce qui se passe lorsque nous cliquons sur Enregistrer. Tout ce code peut sembler simple. L'art est simple et il est très simple grâce à ces bibliothèques d'assistance qui nous sont offertes par la suite d'outils d'identité. Mais c'est un processus très complexe dans le seau. Très bien, donc si tout cela échoue et que l'utilisateur, si cela n'a pas réussi, est le Federals et valide. Il va simplement compiler toutes les erreurs et renvoyer la page. Donc, ce que je vais faire, c'est tester sur la mère ou la distribution juste pour m'assurer que tout fonctionne encore. Donc nul dans notre registre. Ne soyez donc pas AGC, bien que nous ayons tous les domaines que nous avions spécifiques. Très bien, donc au lieu de nom d'utilisateur ici, je suis prêt à dire admin, admin test.com. prénom est administrateur, le nom est test, puis la date de naissance. Il suffit de choisir le jour. Et puis mon mot de passe spécial, qui est p à San Assist allele ou D1. Et il suffit de répéter ça. Ensuite, nous pourrons cliquer sur Register. Et nous sommes redirigés vers cette confirmation de registre. Sachez ce qu'il y a à propos de ce jeton. Si vous regardez cette URL, si vous la survolez simplement et que vous regardez l'URL qui apparaît, vous verrez que tout ce qui vient après l'ID utilisateur est égal, c'est-à-dire plutôt l'ID utilisateur de la base de données. Et puis vous verrez que vous avez une esperluette, puis le mot code, et tout cela après le code est que Tolkien, LC et est généré, n'est-ce pas ? Nous n'avons donc rien fait de tout ça, tout ça hors de la boîte. Je viens donc de confirmer un cône et c'est très bien. Vous voyez ici cette citation que j'ai mentionné tout le code Tolkien qui a été généré. Alors permettez-moi d'essayer une autre distribution, en fait je vais utiliser l'utilisateur de couture. Et moi, je ne fais que forcer une erreur pour montrer ce qui se passe lorsque certaines contraintes sont violées. Très bien, donc en utilisant les mêmes choses, vous verrez ici, il est dit que le nom d'utilisateur admin est déjà pris. Donc, quand il a généré cette liste d'erreurs ici, cela signifie que le résultat n'a pas réussi car il a essayé de créer. Mais ensuite, sur la base des contraintes qui se désactivent pour utiliser le même nom d'utilisateur prêt à l'emploi. Il y a certaines contraintes, certaines choses qui nous diront comment nous obtenons des commentaires haptiques. Nous pouvons les tweeter au fur et à mesure. Nous pouvons créer notre utilisateur personnalisé gère des règles d'authentification personnalisées, tout ce dont nous avons besoin. Nous pouvons étendre notre identité comme nous le devons. Ainsi, lorsque nous reviendrons, nous allons examiner ce qu'il faut pour configurer cette confirmation de courrier électronique afin que lorsque nous nous inscrivons, nous puissions réellement voir cet e-mail, tel qu'il était. 12. Mettre en place une vérification des e-mail pour l'inscription: Très bien, les gars. Nous sommes donc de retour. Nous voulons configurer notre expéditeur et tous envoyer cet e-mail après l'enregistrement de l'utilisateur, ceux qui sont loin de produire les taux de réussite des petites méthoxy 1 et 2. Cela augmente le niveau de sécurité et apporte une authentification à deux facteurs sur Kindle pour le régime. Même si ce n'est pas l'option la plus sûre, elle apporte toujours ce niveau de sécurité. Nous allons donc certainement examiner comment il est mis en œuvre. Et par extension, pour ceux qui ont l'expéditeur du courrier électronique en cours d'enregistrement, vous remarquerez qu'il existe d'autres procédures telles que la réinitialisation du mot de passe. Bien que les deux choses que nos courriels seront expédiés et que nous allons configurer l'expéditeur par rapport à notre tâche actuelle, qui consiste à bien enregistrer notre utilisateur, cette interface d'expéditeur de courrier électronique est accessible n'importe où. Vous pouvez toujours aller l'enregistrer la façon dont je vais l'enregistrer plutôt dans startups afin qu'il puisse être utilisé n'importe où ailleurs. Très bien, voyons ce qu'il faut pour obtenir ce gain ouvert. Tout d'abord, j'ai créé un nouveau dossier. Et je vais appeler ces services. Et dans les services, nous allons ajouter une nouvelle classe. Et je vais appeler cette classe juste un e-mail à l'expéditeur. Très bien, donc nous avons notre expéditeur de courriels de classe et il va hériter de l'expéditeur de l'e-mail. Par conséquent, cet expéditeur de messagerie va implémenter la méthode d'envoi de courrier électronique asynchrone. C'est donc définitivement ce dont nous avons besoin. Avant d'aller plus loin, je veux l'enregistrer dans la startup. Je voulais donc m'assurer que cette application sache que nous avons ce service en cours d'exécution. Je vais donc dire que les services ajoutent, transitoires. Et je vois que j'envoie un e-mail à l'expéditeur va être implémenté par l'expéditeur. Et puis nous ajoutons tout manquant ou, par exemple, pire. Non, je laisse ça ici pour l'instant, mais je vais certainement revoir cela parce que je pense que le temps nous aurons fini ici devra écrire cette ligne différemment. Donc, pas de problème. Donc, ce que je vais faire dans le faisceau I dans la classe d'expéditeur de messagerie c'est configurer quelques champs pour notre serveur ou notre port sur notre adresse. Quelqu'un qui utilise SMTP comme des séances. Par conséquent, pour cette activité, comme Oh, nous sommes dans un environnement div et tout le monde n' peut-être pas accès à un serveur SMTP, etc. Ce que nous utiliserons, c'est un serveur SMTP hôte local. Et nous chercherons à utiliser suffisamment. Donc, pour null, nous avons les champs. Nous avons donc les champs pour le serveur SMTP, les ports SMTP à partir de l'adresse e-mail. Et puis j'ai un constructeur qui les initialise initialement pour que vous puissiez mettre en pause et répliquer cela. Maintenant, dans l'envoi d'e-mail est pris, je vais faire construire un message. Disons donc que le message var a égal à un nouveau message. Donc, notre nouveau message électronique. Et cela va nécessiter la bibliothèque mâle dotnet dot système. Et à l'intérieur de ce message électronique, nous pouvons configurer les sujets du corps et le corps a raison. Nous pouvons donc tous les mettre en place. Parce que m'envoyer poser un évier, c'est attendre ceux de n'importe quel brûlure. Nous avons donc toutes ces informations disponibles. Nous allons coder en dur ou à partir d'une adresse e-mail parce que d'une manière générale, vous envoyez à partir de comme je ne réponds pas ne sont pas replay, quelque chose comme ça. Cela n'a pas vraiment d'importance. Les règles commerciales diffèrent. Nous sommes en train de passer par une configuration de base. Après tout cela, nous allons définir l'ajout de points de message et nous ajoutons une nouvelle adresse de repas à l'adresse e-mail à laquelle il est prévu d'envoyer. Ensuite, nous allons appeler un client SMTP à l'aide du serveur SMTP et des valeurs de port qui auraient été transmises par le constructeur et qui distribueront ce message à l'extérieur. Nous reviendrons simplement que la tâche est terminée. Voilà donc les bases du téléphone mobile, de l' expéditeur de courrier électronique utilisant SMTP. Et tout ce que j'ai dit que nous allons tout faire localement en utilisant notre propre SMTP. Donc ce que je vais faire, c'est modifier ce fichier de démarrage et r, désolé cette ligne au démarrage. Et ce que je vais faire, c'est ajouter transitoire et lui faire savoir que le fournisseur de services, donc ce que S représente ici le fournisseur de services. Je peux donc vous faire savoir qu'il va s'agir d'un nouvel expéditeur de courriels. Ensuite, l'expéditeur de messagerie prend ce serveur SMTP comme premier paramètre. Très bien, nous allons donc dire hôte local ou quel que soit le serveur SMTP que vous utilisez. Certaines personnes le placent dans le fichier de paramètres de l'application , puis appellent la configuration. Il y a tellement de façons de le faire. Nous utiliserons le portrait par défaut est 25. Et puis l'adresse e-mail, je vais juste dire sans réponse. Classified.com. C'est de là que l'e-mail doit être envoyé. C'est donc essentiellement à ça que cela va ressembler dans la startup. Passons maintenant à notre serveur SMTP. Nous allons donc utiliser ce serveur SMTP Luca appelé papier, que vous pouvez accéder à un tableau de bord découpé en papier smtp.com. Et il sert également de serveur SMTP et de visionneuse de courrier électronique. C'est donc un outil très pratique pour le développement, élégant où vous voulez simplement voir, ce mécanisme d'e-mailing fonctionne-t-il ? Je vois ce que je dois voir dans les tests, non ? Vous pouvez donc aller de l'avant et lire là-dessus si vous le souhaitez. Mais pour anormal intéressé par le téléchargement de la dernière version. Donc ils l'hébergent sur GitHub, nous pouvons simplement télécharger. Et une fois que la configuration est en cours, vous serez peut-être invité à les examiner. Vous pouvez donc simplement aller de l'avant et installer. Et une fois que cela a été terminé avec succès, vous pouvez l'ouvrir sur votre machine afin de pouvoir simplement cliquer sur Démarrer, Rechercher des découpes de papier et une fenêtre similaire à celle-ci devrait apparaître. Vous devrez peut-être également vous libérer dans le pare-feu, ce qui permet l'accès pour qu'il sache que ma machine sait faire confiance à cette application. Très bien, c'est à ça que ressemble le gestionnaire de messagerie. Mais encore une fois, elle est en train de doubler comme SMTP. Alors prenons ça pour faire un tour. Je ne fais donc que remplir ma page de redistribution avec des données de test, puis je vais juste cliquer sur le registre. Comme d'habitude, nous accédons à la page de confirmation du registre. C'est vrai. Il est donc dit, veuillez vérifier votre e-mail pour confirmer les cônes Europe. Remarquez donc qu'il ne va plus faire de simulation. Si je regarde rapidement la page du registre dans le système de coordonnées, qu'est-ce que c'était ? Il a dit qu'il allait envoyer cet expéditeur de courrier électronique , puis il verra si les options exigent de confirmer nos cônes, puis aller à la confirmation de l'enregistrement. C'est très bien. Tout ça, c'est très bien. Mais si je passe au paiement par clic, vous voyez ici que nous avons reçu l'e-mail. Très bien, veuillez confirmer votre article et en cliquant ici, c'est exactement ce qu'ils ont dit. Veuillez confirmer vos colonnes en cliquant sur. Ensuite, nous avons la balise ancre avec l'encodage HTML de notre URL de rappel et du code Tolkien. Et tout ça à voir cliquer ici, n'est-ce pas ? C'est donc fondamental ce que cela apporte à la table. Donc oui, nous pouvons tester l'e-mail et tout ce que nous voyons qu'il fonctionne, comment il fonctionne exactement, autant d'informations que vous souhaitez présenter à l'utilisateur, n'est-ce pas ? C'est là que vous feriez cela. Je vais juste voir cliquer ici. Il navigue et puis il dit : « Vous n'êtes pas confirmé. D'accord, comment savoir si je suis vraiment confirmé ou non ? Nous pouvons simplement revenir à notre base de données en tant que lévodopa ici. Si je me rafraîchis et que je regarde tous les utilisateurs. Voici donc cet utilisateur récent. Vous verrez ici que l'e-mail est confirmé. C'est donc celui que je viens de confirmer par e-mail. Et remarquez encore une fois avec les mots de passe les trois boss ou est-ce différent ? Eh bien, ils sont pareils. Soyez en train de dire que c'est le bleu ou ID1. Très bien. Je pense donc que c'est pour non. Comme je l'ai dit, ces expéditeurs d'e-mails seront utilisés à plusieurs endroits pour plusieurs tests et situations. Désolé, laissez-moi juste prendre mes repères. Cet expéditeur enverra donc des e-mails pour distribution, confirmation du mot de passe oublié et pour tout ce dont vous avez besoin. Donc, une fois que ce serveur SMTP découpé sur papier est en cours d'exécution, hésitez pas à tester ces e-mails sur ce à quoi ils vont ressembler dans différents paramètres et situations partout. 13. Considérations supplémentaires sur le mot de passe: Bienvenue les gars de retour. Nous procédons donc à la configuration notre distribution et à la mise en œuvre de la sécurité. Et nous avons brièvement examiné certaines des options de sécurité qui sont en quelque sorte intégrées à l'identité que nous pouvons mettre directement en pipeline. Sachez que le thème récurrent de commande avec identité est extensibilité car pas tout le temps, vous obtiendrez les options par défaut qui répondent à vos besoins spécifiques, vos besoins professionnels ou à tout ce que vous voulez accomplir. Ce sont des finales des vracs jusqu'à un certain point. Eh bien, 20 je veux juste passer ce petit avantage. Il se peut que vous deviez écrire des extensions. Dans cette leçon, nous allons donc envisager d'ajouter une sécurité supplémentaire par mot de passe. Et cette sécurité supplémentaire par mot de passe pourrait être motivée par votre vision ce que les mots de passe sécurisés doivent être dans votre organisation particulière ou dans vos paramètres particuliers. Donc, globalement, nous savons que nous voulons exiger des chiffres ainsi de suite. Pas moins de huit caractères, oui, majuscules et toutes ces choses. Bien sûr. Mais que se passe-t-il si vous vouliez vous assurer que des mots-clés spécifiques n'étaient pas dans leur vie, peut-être le nom de l'entreprise, ou même l'utilisateur. Parfois, les utilisateurs utilisent leur propre nom comme mot de passe. Vous pourriez en fait aider à atténuer certaines choses qui, en écrivant vos propres méthodes personnalisées, sont des fonctions. Donc, le fait est qu'à ce stade, l'identité par défaut des services nous avions ajoutée sur Add Entity Framework stocke comment nous lui avons dit d'utiliser les contextes DVI. Mais nous pourrions en ajouter davantage à ce pipeline. Je vais donc simplement supprimer ce point-virgule et je suis allé à la ligne pour que nous puissions voir où chacun commence et s'arrête. Et puis, en dessous de celui-ci, je pourrais dire point. Et si vous regardez ce que vous obtenez, vous voyez que vous avez un kilo de la partie deux, permettez-moi de dire simplement des données financées, permettez-moi de commencer à taper des validations et pour que vous puissiez ajouter une validité de mot de passe peut ajouter un validateur de règle, utilisateur du Canada validateur. Si vous souhaitez écrire des méthodes d'extension, c'est ce que nous allons faire pour le pipeline de mots de passe ou le pipeline de validation. C'est aussi simple que de les placer dans le service d'identité que vous ajoutez. Vous pouvez simplement les ajouter. Donc, tout quota personnalisé que vous devez écrire, ou si vous souhaitez utiliser votre propre fournisseur Tolkien, magasin d'utilisateurs d' héroïne, quel qu'il soit, car vous n'utilisez peut-être pas nécessairement la base de données comme nous le sommes. Il peut avoir une base de données et vous souhaitez utiliser votre propre boutique. Toutes ces choses sont possibles. Je vais donc faire le validateur de mot de passe. Et ici, je vais avoir une classe que quelqu'un appelle le service de validation de mot de passe. vous suffit donc de lui donner la classe que vous avez l'intention d'utiliser ou de créer. Dans notre cas, nous allons créer cela. Je l'ai déjà créé, donc c'est très bien. Vous pouvez aller de l'avant, faire le bouton de classe là. Puis j'ai ajouté un nouveau dossier sur l'entité Add et j'y ai mis cette classe. Vous pouvez donc simplement aller de l'avant et le faire. Et c'est à peu près un modèle pour toute autre personnalisation ou extension que vous souhaitez ajouter à ce pipeline d'identité. Donc, lorsque je saute dans cette classe, les caractéristiques de marque de cette classe standard CSS, mais elle hérite de i password validator avec les contextes de notre classe d'utilisateurs personnalisée. J'ai donc favorisé le validateur provient de notre dossier d'identité Microsoft dot ASP NET Core, ou désolé, bibliothèque. Et l'utilisateur provient de notre espace de noms d'entités. Vous pouvez donc entrer ce point de contrôle inutilisé incluant les références manquantes. Une fois cela fait, vous devrez implémenter la face utilisateur, qui vous donne cette méthode appelée valider un lavabo. asynchrone financée prend le gestionnaire ainsi que l'objet utilisateur et le mot de passe au fur et à mesure qu'ils sont créés pendant le processus d'inscription. Je suis donc allé de l'avant et j'ai mis un exemple de code sur ce qui pourrait se passer ici. Je vois juste si le mot de passe répond cette condition et si vous ne voulez pas que vous ayez toutes vos conditions, quelles qu'elles soient, vous transmettez votre mot de passe par vos vérifications et soldes. S'il ne correspond pas à la marque. Il vos règles commerciales parce qu'il n'ira aussi loin que si le mot de passe RD MIT ces exigences. Donc, s'il répond à ces exigences, alors je vais vous dire, d'accord, laissez-moi examiner plus en détail ce mot de passe en fonction de ce que l'entreprise veut. Ainsi, l'entreprise le souhaite, si elle ne répond pas à ces exigences supplémentaires, nous allons renvoyer le point de tâche à partir des résultats et des résultats d'identité. Donc cette méthode prend des résultats d'identité, n'est-ce pas ? Parce que c'est ce que ça revient. Nous devons donc renvoyer ce résultat d'identité et échouer qui nécessite un tableau d'erreurs d'identité. Vous pouvez donc simplement compiler cette zone, compiler la zone, compiler autant de violations que vous compiler cette zone, ajouter une nouvelle erreur d'identité par violation, puis terminer avec ce résultat. Renvoi d'un champ de résultat d'identité avec peut-être tout le tableau d'erreurs. Ce sont les zones qui s'affichent sur la page Register comme étant les erreurs, explique pourquoi vous ne pouvez pas vous inscrire. Rappelez-vous donc que lorsque nous avons essayé de nous inscrire si nous n'avions pas mis un mot de passe assez fort ou si un nom d'utilisateur a été pris, il a rebondi et a dit, hé, c'est faux. Donc, à peu près des erreurs d'identité. C'est ce qui va être affiché sur la page. Une fois ce bonus. Si tout va bien, alors nous retournerions simplement le résultat de l'identité. Ce qui, si nous revenons à la page d'enregistrement, vous verrez beaucoup de choses qui vous demanderont si un résultat est un succès. Donc, le résultat que j'essaie de créer cet utilisateur s'il réussit, puis continuez. Sinon, affichez les erreurs provenant du résultat. C'est donc tout ce qui se passe ici. J'ai donc amélioré cette méthode pour ramener à la maison mon scénario que je viens de peindre. Disons donc que nous avons un tas de choses que nous recherchons. Je vais commencer par initialiser une nouvelle liste d'erreurs d'identité. Ensuite, j'ai les différentes formes. Par conséquent, une vérification pourrait être que si le mot de passe contient le nom de la société, vous ajoutez une identité, ERCP et que le code est le nom de la société, quelle description, c'est-à-dire ce qui serait réellement imprimé sur la page à l'utilisateur, est-ce que vous ne devriez pas contenir le nom de l'entreprise, n'est-ce pas ? Et bien que l'un d'eux, s'il contient un prénom ou le nom que l'utilisateur saisit, nous ne pouvons pas ou ne devrions pas contenir votre nom. Celui-ci utilise plus de courrier électronique. Vous ne voulez pas non plus qu'ils mettent ça dedans. Vous avez mis un message approprié. Après toutes ces vérifications, il suffit d'ajouter de nouvelles erreurs, ajouter de nouveaux Eris à la liste. Et ensuite, si à la fin, nous avons réellement des erreurs à la place de la liste, alors nous voulons renvoyer qu'elle a échoué et nous voulons convertir cette liste en tableau. Pourquoi est-ce que je ferais ça ? Parce que rappelez-vous qu'il s'agit d'une erreur d'identité IRI. Nous avions donc une liste compilée. Nous le convertissons simplement en zone de dernière minute pour envoyer de l'argent avec l'échec. Sinon, il s'agissait d'une tentative de création encouragée réussie. Donc, à ce stade, pour un repas, ainsi de suite pour envisager l'intégration avec des services tiers. Encore une fois, cela dépend de vos règles commerciales, donc je ne fais que vous donner les idées. Mais vous disposez de services tiers qui vous aident à déterminer la force des mots de passe par rapport au nombre de fois ces mots de passe ont pu être violés dans le passé. exemple typique d'un tel service serait PEW 100.com, PWN Ed.com. Et ils vous disent que ce mot de passe a été violé. J'ai peut-être des amis dans le passé. Vous ne voulez donc pas que vos utilisateurs utilisent un symbole de brèche. Les mots de passe sont possibles. Les résultats sont connus pour être vulnérables comme le mot de passe RP au signe comme systole ou ID1 comme j'utilise, n'est-ce pas. Vous pouvez donc vous intégrer à d'autres parties ou services tiers À ce moment-là pour rendre l'ensemble de votre flux de travail de validation plus hermétique et amusant, bien que ce soit fondamentalement tout. Nous venons de l'étendre pour qu'il soit rapide. Très bien, donc voici juste pendant un tout nouvel utilisateur. Et ce que je vais faire, c'est entrer le mot de passe, assurez-vous qu'il respecte la longueur minimale. Ce que je vais mettre dans le test de mots. Très bien ? Et je vais faire la même chose, n'entendez pas. Et je ne sais pas si cela fonctionnera correctement parce que je ne fais pas de sensibilité à la casse, donc je vais certainement avoir besoin d'une modification. Donc, le code pour s'assurer qu'il effectue une vérification sensible à la casse des chaînes. Mais je voulais juste voir ce qui va se passer. Donc, ne fonctionne pas en mode débogage, lorsque je clique sur Enregistrer, vous voyez ici le mot de passe ne doit pas continuer votre nom. C'est donc de l'argent qui rebondit avec cette époque même où nous sommes assis. Très bien, alors mettez tout le reste en pause, mais n'a pas respecté les mesures les plus strictes que nous avons mises en place pour qu'il soit vraiment plus simple étendre les fonctionnalités des services d'identité. 14. Les bases de l'inscription - Examen des sections: Très bien les gars, donc nous sommes prêts à fermer cette section ou ce module. Et je pense que nous avons fait un travail particulier ici. Nous avons donc ajouté l'identité à notre projet à la minute où nous avons étendu la classe utilisateur en créant notre propre classe, rencontrant héritée de l'utilisateur d'identité. Nous pouvons mettre dans nos propres champs personnalisés. Après tout cela, nous avons dû savoir au contexte DB que chacun devait utiliser le contexte DB d'identité par opposition à contextes DB irréguliers dans le cadre de ce que propose notre nouvelle classe d'utilisateurs. Nous avons également dû nous assurer de mettre sur cette base la création de modélisation parce que nous avons vu l'ère que nous connaissons avec les enfants plus âgés. En outre, nous avons effectué notre migration, ce qui nous a donné un fichier de migration supplémentaire qui a créé toutes ces tables liées aux identités pour nous dans la base de données. À ce stade, nous aurions probablement dû le mentionner auparavant, mais il arrive parfois que vous souhaitiez conserver un magasin d'utilisateurs différent de la base de données transactionnelle réelle. Et ce point, il serait aussi facile que de créer un contexte de base de données différent et lui donner sa propre chaîne de connexion dans la zone de démarrage point cs, n'est-ce pas ? Vous en auriez donc deux, un pour les défenseurs des contextes DVI, sur 14 pour identifier des contextes DVI, vous utilisez peut-être un nom personnalisé. Donc, c'est très bien. Bien sûr, la chaîne de connexion différente est l'endroit où vous allez vous dire d'utiliser cette base de données à cette fin. Et puis vous pourriez probablement faire BK qui alors comment quelque chose comme l'identité, connexion DB, et ensuite vous lui donnez sa propre chaîne de connexion. Donc je suis juste, je ne fais que partager différentes choses avec vous parce que vous regardez peut-être tous les projets et UCI, différents contextes DVI pour les contenus liés aux utilisateurs. Et même alors, même lorsqu'ils utilisent le même magasin de données, personas peut parfois séparer les contextes DVI de l'application, c'est les données irrégulières, données différemment des contextes DVI basés sur l'identité. Je suis juste en train de le démontrer ici. Donc, les contextes DVI de l'utilisateur. Celui-ci serait donc toujours un contexte DB. Très bien, l'autre sait hériter du contexte de la base de données d'identité, et il n'aurait pas besoin de jeux de bases de données car tout le monde, il ne fait rien d'autre que gérer les choses basées sur l'identité. Vous pouvez donc voir des choses que je ne fais que partager différentes nuances sont des choses différentes que vous pourriez rencontrer au fur et à mesure que vous développez plus de projets, de sorte que vous en ayez une compréhension et appréciation pour un moment où vous pourriez finir. faire certaines choses. Très bien. En dehors de cela, nous avons regardé tous les échafaudages ou zones et nous avons échafaudé ou enregistré la page. Nous avons étendu le formulaire pour inclure des champs supplémentaires par rapport à notre classe d'utilisateurs personnalisée. Nous avons examiné le fichier de registre et les seules modifications que nous avons dû apporter réellement ou simplement pour nous assurer que nous capturons ces informations supplémentaires dans notre objet utilisateur avant la création de l'utilisateur. Nous devons implémenter notre expéditeur EMEA. Donc, oh, nous avons cet expéditeur de courriels en cours. Non, nous pouvons vraiment bien, nous pouvons laisser tout ce que le code fait, c'est très bien. Nous nous contentons donc de rediriger vers la plus grande confirmation. Nous n'avons pas à déranger tout ça. Mais nous avons implémenté notre expéditeur de courriels ici. Dans l'expéditeur de courrier électronique le place dans un dossier de services. Nous avons dit que nos paramètres SMTP et dans le week-end de démarrage de ces valeurs étaient codées en dur. Par conséquent, nous utilisons plutôt un hôte local, qui pourrait facilement être échangé contre votre serveur SMTP réel. Nous utilisons le port et c'est l'e-mail depuis lequel tout est envoyé. Et pour les tests, nous aurions mis en place notre papier appelé SMTP. En dehors de cela, nous avons ajouté notre identité par défaut. Nous avons examiné la photo que nous pouvons mettre dans nos règles personnalisées concernant la façon dont les informations utilisateur sont validées au moment de l'inscription. Et différentes contraintes, encore une fois mises en place à ce niveau, nous devons nous assurer d'ajouter les magasins Entity Framework. Et nous avons également examiné que nous devions ajouter des pages Razor. Si vous utilisez une application MVC ainsi qu'aux points de terminaison des pages Razor. Très bien, donc avec tout cela dit et fait, nous allons simplement faire un enregistrement rapide et assurer toujours que votre message est suffisamment clair. Et puis on peut faire et couler. Maintenant, lorsque nous reviendrons, nous commencerons à envisager davantage d'authentification et d'autorisation, mais dans le contexte de l'identité. Nous allons donc examiner comment nous prenons en charge la fonctionnalité de connexion. Mot de passe oublié, toutes ces fonctionnalités merveilleuses. 15. Les bases de l'accès - Aperçu des sections: Très bien les gars, donc on se déplace ou on met en place notre fonctionnalité de distribution. Et dans cette section, nous allons nous concentrer sur l'authentification. s'agit donc de configurer le login, sécurité des mots de passe, de les sessions ou de gérer les cookies à l'aide de l'identité. Toutes ces choses merveilleuses que nous allons regarder. Je vais examiner plus en détail les bibliothèques tierces que le gestionnaire d'utilisateurs sous moniteur de connexion et comment nous pouvons implémenter l'authentification multifactorielle. Alors, restez dans les parages, nous allons nous amuser beaucoup dans cette section. 16. Mettre en place la fonctionnalité de connexion: Très bien les gars, donc dans cette leçon, nous allons examiner la fonctionnalité de connexion. Nous avons donc déjà configuré ou distribué des choses et nous sommes en mesure de créer un utilisateur dans nos actes de magasin, non, nous devons en fait faire la connexion. Donc avant, non, nous avions réellement implémenté la connexion en utilisant notre page de connexion personnalisée et notre code personnalisé, dont je suis sûr que nous pouvons tous les deux être d'accord, n' était pas très sécurisé. Ce qu'il a fait, c'est d'accepter l'entrée du formulaire et de le tester manuellement par rapport à quelque chose qui, selon nous, serait correct. Voulons-nous être corrects ? Évidemment, dans une situation réelle, les usages sont stockés dans la base de données lorsqu'ils arrivent à se connecter, ils viennent s'authentifier dans le haut. Et nous devons vérifier leur existence et l'exactitude de leur mot de passe dans la base de données. Donc, ce que nous allons faire pour obtenir un véritable mécanisme de connexion, c'est de nous fier au code de connexion fourni par l'identité. Nous pouvons donc cliquer avec le bouton droit sur un cône semblable à ce que nous avons fait avec notre page d'inscription et nous pouvons accéder à un nouvel article éraflé. Ensuite, nous avons sauté vers l'identité, l'identité sexuelle. Et une fois le traitement terminé et que nous aurons obtenu cette boîte de dialogue, nous allons sélectionner la page de connexion. Nous avons donc une connexion et un logo, donc je vais juste sélectionner les deux à ce stade. Très bien, donc une fois que j'ai fait cela, nous savons que nous sélectionnons nos contextes de données, puis nous cliquons sur Ajouter. Très bien, je rencontre cette erreur. Il se peut que vous ne le rencontriez pas. Mais si vous le rencontrez, nous allons y travailler ensemble. Non, je pense que cette erreur survient en raison de l'écart potentiel de versionnement que j'aurais mentionné plus tôt. Je vais juste annuler ça. Et nous pouvons passer au gestionnaire de paquets NuGet pour ce projet Web. Et si nous regardons bien, je suis presque sûr qu'il y aura des mises à jour ici. C'est notre attente. Très bien. Le fait est donc que lorsque le versionnement est mal aligné entre quelques-uns des paquets , tout le reste sera désaligné. Si je ne me trompe pas, au moins l'un d'entre eux est là. Celui-ci a donc été amélioré. Je ne l'ai pas fait personnellement. Parfois, cela arrive. Je ne sais pas. Il se fait installer après coup, mais néanmoins, c'est comme ça qu'on va le résoudre. Je vais donc sélectionner tous les paquets et les laisser tous se mettre à niveau. Et ce que j'aurais pu faire était juste bon pour l'ensemble de la solution pour m'assurer que tous les projets sont sur la même longueur d'onde. Donc, un peu null hors sujet, mais nous pouvons effectivement cliquer avec le bouton droit sur la solution gérée et obtenir des packages pour la solution. Cela nous permet d'examiner les projets individuels et les versions qu'ils utilisent. Ainsi, lorsque nous obtiendrons la liste des paquets et que nous cliquons sur l'un de ces paquets, vous verrez les deux projets ou autant de projets que vous en avez. Et s'il se trouve dans l'un et non dans l'autre, vous verrez qu'il n'est pas installé. Cependant, pour la lumière différente, nous sommes un noyau, c'est dans les deux, mais on voit cinq points 10. L'un d'eux dit que le 5.11 est généralement parlant, il est bon d'avoir tout au même niveau. Je vais donc simplement cliquer sur eux un par un et m'assurer qu'ils sont tous dans la même version. Maintenant, il est facile de le faire aussi, c'est simplement aller dans le fichier CS Bridge. Et je peux simplement les changer en 11. Je sais donc que nous vivons dans ce qu'ils doivent être. Il suffit de les parcourir tous ou vous auriez pu simplement faire le gestionnaire de paquets NuGet. Et bien qu'il y ait tellement de façons, mais une fois que vous faites une compilation et qu'elle a été signalée avec succès que vous ne le savez, vous êtes sur la bonne voie. Après tout cela, essayons encore une fois. Donc, Koen News a sabordé l'identité de l'objet. Allez-y et sélectionnez nos nouvelles pages et notre contexte DV et ajoutez-y. Et lorsque tout cela est fait, nous avons maintenant nos nouvelles pages à des fins de connexion et de déconnexion. Jetons donc un coup d'œil à la page de connexion et toute l'argent ou la page de connexion que nous avons créée ressemble beaucoup à la page de connexion de l'échafaudage. Sauf que vous remarquerez que quelques autres services sont injectés, en termes de gestionnaire d'utilisateurs, sur le gestionnaire de connexion, nous avons vu ces deux bibliothèques sur la page du registre. Et vous remarquerez qu'il y a peu d'autres choses que nous n'avons pas incluses ici. En fin de compte, nous avons le même modèle de saisie qui prend l'adresse e-mail et le mot de passe. Et cela pourrait être modifié si vous voulez avoir un nom d'utilisateur et un mot de passe, alors vous demandez évidemment que le nom d'utilisateur soit celui de l'e-mail, afin que vous puissiez le modifier si vous le souhaitez. Sinon, nous avons l'En-Gedi, qui veut savoir s'il y a un message d'erreur que je devrais afficher ? Non. D'accord, très bien. L'URL renvoyée est, puis elle prévoit des dispositions pour les bibliothèques de connexion externes ou les services de connexion qui ont pu être inclus. C'est Facebook et Google, et cetera. Donc, nous n'allons pas encore en passer par là, mais nous devons nous inquiéter à ce sujet. Cependant, sur le post, voici où plus de choses la magie se passe vraiment. Donc, sur post, nous faisons quelque chose comme OK, nous connaissons une URL de retour et les connexions externes, c'est très bien. Si l'état du modèle est valide et validité une fois de plus, est basé sur ces attributs sont des annotations plutôt que celles du modèle. Si tout est valide, nous utilisons le gestionnaire de connexion. Pas de remarque, je ne fais pas une base de données appelée, elle ne fait même pas une base de données appelée art, pas explicitement parce que le gestionnaire de connexion est plein de méthodes sur l'une d'elles est la connexion asynchrone par mot de passe. Cette méthode en elle-même va donc aller à l'adresse e-mail et au mot de passe qui a été fourni. Il va vérifier la base de données dans la table des utilisateurs d'ASP NET. Puis-je trouver un enregistrement correspondant ? Oui, je peux. D'accord. Non. Armés de la fleur pour se souvenir de moi ou non, on va créer le biscuit, non ? Et en fait, j'ai signé la personne. Donc, cette ligne va essentiellement faire tout cela et défendre l'original. Tout cela crée la revendication, configurant cet utilisateur d'entité, le principal, puis en se connectant. Tout cela est capturé et exécuté à peu près dans cette seule ligne. C'est bon ? Bien entendu, cela peut être étendu si vous avez plus de réclamations ou d'autres éléments que vous souhaitez ajouter à l'utilisateur. Mais en fin de compte, vous êtes généralement prêt à l'emploi, Candace, utilisez le code tel quel, n'est-ce pas ? Non. Donc, après avoir tenté de créer le cookie et tenté de respecter l'ensemble du principe et de se connecter aux contextes HTTP, il retournera s'il a réussi ou non. Donc, en cas de succès, oui, nous nous connectons à l'enregistreur qui sera configuré ultérieurement après que cet utilisateur ait été connecté. Ensuite, nous redirigeons. Si cela nécessite une authentification à deux facteurs, il y a une page livrée avec une identité qui nous permet de faciliter, à FA s'ils sont verrouillés, n'est-ce pas ? Par conséquent, octo signifie que nous pouvons réellement suivre pour voir que quelqu'un a trop de tentatives de connexion ou que quelqu'un a enfreint certaines règles métier et qu'il n'est pas en mesure d'accéder au système pour le moment. Nous pouvons définir ce drapeau de sorte que s'ils sont verrouillés, nous les redirigeons vers la plage qui les a vus savoir qu'ils sont verrouillés, dit. Sinon, nous affichons simplement une erreur que vous pouvez personnaliser dans une certaine mesure. Nous ne voulons pas donner trop d'informations, car si le mot de passe était incorrect pour l'argument, vous ne voulez pas leur donner quelque chose de suffisamment spécifique pour connaître toute votre posture. C'était faux, tout votre nom d'utilisateur était erroné parce que vous donniez à un attaquant au moins 50 % de l'équation ici, il saurait exactement ce qui ne va pas. Il s'agit donc d'un message très générique pour voir une tentative de connexion non valide. Encore une fois, vous pouvez traiter ces balles avec bon goût et sécurité. Et finalement, nous retournons la page. Donc, si vous arrivez aussi loin, cela signifie que quelque chose a échoué ici parce que s'il était valide, il aurait été redirigé. Et remarquez directement une faible teneur en calories parce que vous ne souhaitez pas rediriger notre redirection des risques vers un site Web externe. Nous avons donc été une redirection locale vers l'URL de retour. C'est un autre qui se sent en sécurité contre les attaques potentielles de redirection. Maintenant, nous pouvons tester cet ancien comme je voulais le faire est de sauter vers le partagé et d'aller à la connexion partielle. Et nous allons modifier l'URL de la connexion afin que votre URL ne ressemble plus au Register 1. Au lieu de cela, je verrai dans un registre qu'il va voir un identifiant. Et au lieu de s'inscrire à nouveau, il va dire « login ». Très bien, donc maintenant, nous allons vous connecter au compte. Et de la même manière pour les logos, nous pouvons simplement les lire sur la page du logo. Prenons donc celui-ci pour faire un tour. Et quand j'arrive à la page de connexion et que j'essaie de me connecter avec mon copropriété existante, je reçois des tentatives de connexion non valides. Non, ce n'est pas une erreur très évidente et nous devons marcher, traverser celle-ci. Permettez-moi d'expliquer exactement pourquoi celui-ci se produit. Donc la façon dont le gestionnaire de connexion, laissez-moi passer à la connexion. La façon dont le gestionnaire de connexion ou cette méthode fonctionne est qu'il prend un nom d'utilisateur et un mot de passe. Donc, la plupart des fois, quand nous en arrivons à ce stade, nous pourrions être mêlés à l'émerveillement, pourquoi cela ne fonctionne-t-il pas ? Je suis une bonne chose. Parce que, par défaut, rappelez-vous que la page d'inscription prenait l'adresse e-mail, le mot de passe et la confirmation. Ensuite, utilisez cette valeur d'adresse e-mail comme valeur d'adresse e-mail et de nom d'utilisateur. C'est donc le résultat du comportement de la boîte. Par conséquent, lorsqu'il a été stocké dans la base de données, vous ne voyez pas dans Email et nom d'utilisateur la même valeur car il s'agissait de la même adresse e-mail que celle qui a été prise et utilisée pour les deux. Depuis que nous sommes arrivés, nous avons ajouté un champ de nom d'utilisateur. prenons donc un nom d'utilisateur différent de celui de l'e-mail. Cela signifie que lorsque la méthode de connexion avec mot de passe ac est appelée, comme nous le voyons ici, elle transmet l'adresse e-mail que nous mettons dans ce qui est vérifié par rapport au champ du nom d'utilisateur. Très bien, c'est pourquoi nous prenons les pieds et ce n'est absolument pas évident. Je ne fais que pointer cet orteil parce qu'il m'a attrapé plusieurs fois. J'espère donc que cela aidera quelqu'un là-bas. Donc, ce que nous allons devoir faire, une fois de plus, nous devons régler la façon dont nous voulons que nos utilisateurs puissent se connecter. Et c'est là que la personnalisation des règles métier déterminera les extensions que vous avez probablement mises en place par rapport à la façon dont vous rédigez complètement votre logique. Donc, si vous voulez ce modèle d'authentification par e-mail, vous pouvez tout aussi bien laisser l'e-mail comme nom d'utilisateur et mot de passe. Sinon, vous devrez peut-être utiliser l'e-mail pour déterminer s'il y a un enregistrement utilisateur sur. Si c'est le cas, vous trouverez le nom d'utilisateur sur cet enregistrement. Ils fourniront l'e-mail, mais vous trouverez ensuite le nom d'utilisateur pour utiliser cette méthode. Ou dans notre cas, tout ce que nous pouvons faire, c'est simplement changer le modèle de saisie pour passer d'un e-mail à demander simplement le nom d'utilisateur pour que je puisse voir le nom d'utilisateur. Et je ne veux pas qu'il s'agisse d'un champ d'adresse e-mail, n'est-ce pas ? Donc, hum, cette refactorisation de ce champ d'adresse e-mail et de l'édition n'importe où ailleurs. Nous demandons donc à l'utilisateur son nom d'utilisateur et son mot de passe, son adresse e-mail et son mot de passe. Donc sur le formulaire lui-même, bien sûr, après avoir mis à jour les références. Très bien, on y va. Maintenant que nous l'avons fait, nous pouvons réessayer cette connexion. Maintenant, je demande un nom d'utilisateur et un mot de passe. Et lorsque je clique sur Connexion, nous voyons ici que nous sommes connectés et que nous obtenons notre écran de bienvenue. Très bien, donc cela fonctionne de la même manière que le gestionnaire de connexion fait tout pour nous. Il expose les revendications et tout. Donc, vous voyez ici, nous voyons ce nom d'utilisateur. C'est bon ? Non, le bouton logo va accéder à la page du logo, qui nous demande ensuite de cliquer ici pour vous connecter. Donc je vais juste inspecter cet élément et bien l'art, désolé, au lieu d'inspecter l'élément comme sauter sur la page. Donc, sur la page du logo, ce qu'il va avoir, c'est une ferme. C'est essentiellement le but ici. Et faites une publication dans cette zone avec l'URL de retour de la page. Bien sûr, c'est un post et ce qu'il dit cliquez ici pour vous connecter. En d'autres termes, je suis sûr que vous ne voudriez pas nécessairement dire à notre utilisateur, allez sur la page du logo, puis cliquez ici pour vous connecter. S'ils cliquent sur le logo, voulez-vous les verrouiller ? Donc, ce que nous pouvons faire, c'est au lieu d' adopter toute cette approche de navigation vers la page du logo, je peux emprunter ce formulaire, revenir à ma connexion partielle, puis utiliser ce formulaire au lieu de l'élément de navigation sur le logo page. Donc, ce bouton, nous allons maintenant voir les logos. Ainsi, lorsqu'ils cliquent sur ce bouton, les demandes seront envoyées sur le logo. Je vais donc simplement retirer cette étiquette d'ancrage que j'avais initialement. Et d'une manière générale, vous verrez ce type de configuration de formulaire. Ainsi, sur la page du logo elle-même, vous avez l'En-Gedi qui abaisse la hauteur. Bien sûr, mais c'est ce qui arrive lorsque nous cliquons sur Déconnexion. Donc, le gestionnaire de connexion, ironiquement, attribue alt, non ? gestionnaire de connexion est donc la bibliothèque et cenotes async est la méthode qui saura, ok, c'est la clé locale tuée par l'utilisateur connecté, tue tout et tue sa session sur le site Web. C'est donc similaire ou il fait essentiellement ce que nous avons fait manuellement ici. Très bien. C'est donc ce que l'action Legos devient des entreprises pour nous. Je vais revenir sur notre application. Et cette fois, lorsque je clique sur déconnecter, il ne fera que des logos et nous indiquera que nous nous sommes déconnectés avec succès. Nous n'avons donc même pas besoin de ce pH du logo, car rappelez-vous que ces fichiers d'identité sont réellement là, c'est juste que lorsque nous voulons les remplacer, nous pouvons les échafauder et interagir avec eux comme nous le ferions ont fait pour la connexion et pour le registre. Maintenant, après avoir supprimé le fichier de logo, si nous revenons à notre partition de connexion, nous pouvons le modifier pour ressembler un peu plus à ce à quoi nous pourrions nous attendre, comment nous avons échafaudé tous les éléments d'identité de la création du projet. Donc, d'une manière générale, vous auriez vu l'injection du gestionnaire de connexion par rapport à la classe d'utilisateurs gouvernante, n'est-ce pas ? Et oui, vous venez de l'injecter dans les contrôleurs ou dans la page que nous avons vue faire entièrement l'injection de dépendances. Cela est uniquement injecté dans une vue. Et puis cette instruction if, au lieu de dire l'identité utilisateur.name qui est authentifiée et dans le gestionnaire est le ponçage de l'utilisateur. Et puis il faudrait simplement tout cet objet revendications ou l'objet principal de l'utilisateur, n'est-ce pas ? La ligne rouge est là parce que nous avons besoin de voir certaines importations. Et cette vue importe un fichier est un bon moyen global d' utiliser des instructions dans vos vues et vos partiels. Ainsi, en utilisant l'identité des points ASP NET Core Microsoft dot dans le fichier d'entrées de vue. Où que vous ayez besoin de ce sable dans Manager, User Manager est injecté. Cela peut se faire sans mère, n'est-ce pas ? Donc, si je vais vous connecter partiellement, nous voyons, d'accord, maintenant nous avons l'utilisateur sorti. Nous pouvons donc répéter ce processus pour l'utilisateur où nous revenons aux entrées View et cette fois-ci, nous ajoutons l'instruction use pour l'espace de noms où se trouve notre fichier utilisateur, c'est-à-dire une entité et elle se trouve dans le projet de classification des données. Une fois que vous aurez fait cela, nous verrons que l'utilisateur ne donne plus d'erreur et que je pourrai construire avec succès. Maintenant que c'est pour le blocage, la fonctionnalité de connexion de base fonctionne. Lorsque nous reviendrons, nous examinerons des mesures de sécurité supplémentaires ainsi que des freins et contrepoids que nous pourrons mettre en place dans notre propre processus. 17. Flux de Logout de la poignée: Très bien les gars, c'est une vidéo très simple et il s' agit juste de gérer ce qui se passe après le logo. Nous avons donc vu que l'exploitation forestière de l'Inde ne ferait que cela. Nous cliquons sur Déconnexion pour accéder à notre page de logo. Nous ne voulons pas nécessairement simplement nous asseoir sur la page. L'utilisateur n'a probablement aucun intérêt à voir une barbe, voir que j'adore la note. Vous voudrez probablement revenir à la page d'accueil. À ce moment-là, vous voudrez probablement aller de l'avant et éradiquer la page du logo. Permettez-moi de le faire rapidement. Âges. Vous avez éraflé l'article, l'identité, trouvez des logos et choisissez ou contextes, puis ajoutez savoir quand ce pH surpasse, faites simplement défiler vers le bas jusqu'à ce qui se passe dans la publication. Donc, sur les messages, nous envoyons tous les utilisateurs, puis nous vérifions pour retourner votre terrain. S'il y en a un, nous redirigeons vers cette URL de retour. Sinon, nous lisons Erich sur la page. Nous continuons donc à voir la page au lieu d'aller à une autre page cred. Donc évidemment, cela revient comme non non. Si je saute pour me connecter partiellement, nous voyons dans la forme que nous avions mise en place, rappelez-vous que nous avions converti ce logo acheté en ferme. Et il s'agit simplement de se soumettre à cette méthode OnPause. Il envoie l'URL de retour, qui devrait être la page d'accueil. Curieusement, ça ne revient pas, mais c'est très bien. Ce que je vais faire, c'est simplement travailler nous-mêmes. N'oubliez pas que nous contrôlons le flux de toute façon. Donc ce n'est pas de se comporter Hall que nous voulons que ce que je vais faire, c'est simplement changer tout ce qui se passe après les logos. Donc, au lieu de s'appuyer sur une URL de retour que nous savons qu'elle est censée être la page d'accueil. De toute façon. Je vais juste dire renvoyer redirection locale et ensuite pointer vers ce que je sais est mon URL de maison, qui à partir de ce moment serait tilde puis barre oblique. C'est vrai. Maintenant que je l'ai fait, essayons ça et voyons ce qui se passe. Je suis donc ici et je suis connecté. Laissez-moi voir ce qui se passe lorsque je clique sur les logos. Lorsque je logos, vous voyez que je suis sur la page d'accueil et je n'ai plus le droit. Essayons donc encore une fois. Je vais me connecter, puis je suis allé à la page des publicités, puis je vais me déconnecter. Cela signifie qu'une fois qu'un logo doit savoir, voir ce qu'il y a sur la page d'accueil. Et on y va. C'est ainsi que vous contrôlez ce flux de lave. 18. Mettre en œuvre la fonctionnalité de remise du mot de passe: Très bien les gars, donc nous sommes de retour et nous allons examiner la fonctionnalité de mot de passe oublié à ce stade. Alors rappelez-vous que lorsque quelqu'un essaie de se connecter et peut-être qu'après avoir échoué quelques fois, il va être frustré et qu'il va vouloir jusqu'à présent être encouragé ou réinitialiser son mot de passe, n'est-ce pas ? Bien sûr, le verbiage ici, vous pouvez le changer. Vous pouvez modifier la page de connexion comme vous le souhaitez. Mais si je clique sur mot de passe oublié, remarquez qu'il naviguera vers une page appelée Mot de passe oublié. Nous n'avons pas du tout échoué à une telle page. Mais rappelez-vous que toutes les pages d'identité qui restent dans le bouton grandi si nous voulons modifier le week-end, toujours étouffée et surélevée comme nous le souhaitons. Mais jetons un coup d'œil à ce qui se passe hors de la boîte. donc oublié votre mot de passe. Veuillez saisir votre adresse e-mail. Je vais simplement utiliser la même adresse e-mail administrateur sur tes.com, puis réinitialiser le mot de passe. Et tout. La procédure habituelle de réinitialisation du mot passe consiste à envoyer un e-mail à l'adresse e-mail que vous avez fournie. Donc, si vous ouvrez votre serveur SMTP capté papier, ou du moins le client SMTP, vous verrez que nous avons reçu cet e-mail de réinitialisation du mot de passe de notre système. Donc, si nous cliquons ici, il accédera à une autre page indiquant Réinitialiser le mot de passe avec ce code Tolkien. Ce code ressemble beaucoup à celui où nous avons dû confirmer Oracle Bones. Ensuite, nous serions en mesure de mettre l'e-mail, saisir notre mot de passe, puis de cliquer sur réinitialiser. Et puis il dira, d'accord, il a été réinitialisé. Veuillez cliquer ici pour vous connecter. quel point je devrais pouvoir me connecter en utilisant le même mot de passe que j'ai utilisé ou la même posture que celle que je viens d'utiliser. Et pardonnez-moi, j'ai oublié notre nom d'utilisateur et non notre e-mail. Essayons donc encore une fois. Nous devrions être bons à y aller. Et nous y sommes. Très bien, donc c'est essentiellement ce que nous sortons de la boîte, j'ai oublié votre mot de passe. Rien de trop chic, mais ce que nous allons faire, c'est d'aller de l'avant et étouffer afin que nous puissions au moins voir ce qui se passe en coulisses. Nous connaissons donc la procédure, nouvelle identité d'article étouffée. Et une fois la construction terminée, nous allons choisir ce que vous voulez. Je veux donc avoir oublié mon mot de passe. Je souhaite également avoir oublié le mot de passe et réinitialiser le mot de passe. Très bien, ce sont donc les trois pages qui ont été impliquées dans ce flux de travail. Il suffit de savoir. Donc, et je fais tout ça. Elle était un contexte. Ensuite, je peux voir apparaître mes nouvelles pages. Examinons donc tout d'abord ce que fait le mot de passe oublié. Par conséquent, il prend en charge l'expéditeur de l'e-mail par défaut. Donc, parce que nous avons cette mise en œuvre, nous n'avons même pas eu à venir ici et à faire autre chose. Il sait simplement ce qu'il faut faire avec le système est configuré. Ainsi, partout où vous avez besoin de cet expéditeur, vous n'avez besoin que de l'injecter en conséquence. Donc ce qu'il fait sur post, et c'est moi qui vois qu'ESI voulait réinitialiser mon mot de passe et cliquer sur ces Réinitialiser, il verra alors, vérifiera si cet utilisateur existe dans le système. conséquent, nous trouvons par e-mail si l'utilisateur est nul ou si l'utilisateur n'a pas encore confirmé son e-mail, nous allons lire les directives pour confirmer le mot de passe oublié. Très bien. s'agit donc essentiellement de faire cela parce qu' il ne veut pas vous donner l'idée que, vous savez, nous savons que vous êtes probablement tendance au système parce que vous avez peut-être envoyé par erreur leur propre e-mail. Mais cela signifie que nous ne l'avons pas trouvé dans le système ou que vous essayez d'oublier votre mot de passe, mais vous ne l'avez pas confirmé. Nous allons toujours vous donner l'impression qu'il y a de l'espoir pour vous. Donc, si le scénario est correct, il n'y a vraiment aucun espoir, mais cette redirection suggère de l'espoir. Donc, à ce stade, vous pouvez prendre une décision. Vous pourriez probablement leur donner des commentaires haptiques pour voir si vous essayez d'oublier votre mot de passe et si vous n'êtes pas encore confirmé. S'il vous plaît, allez confirmer l'e-mail DCG et confirmer. L'utilisateur sait donc que Oh, je suis désolé, j'ai raté une étape et c'est pourquoi je ne peux pas entrer dans le système. C'est donc à vous de décider. Mais ce n'est que le comportement par défaut. Plus loin cependant, il continue à générer le code. Cela se produit lorsque nous avons téléphoné à l'utilisateur et au système. Nous générons le code. Vous verrez donc que cela ressemble beaucoup à ce qui se passe dans ce registre. Bits de confirmation, non ? Il a donc généré le code sur altérable. Regardez la différence clé ici. L'URL pour cela est Confirmer l'e-mail, tandis que l'URL correspond à la réinitialisation du mot de passe. Et une autre chose est que le Tolkien qu'il génère est la réinitialisation du mot de passe Tolkien. Alors que dans le registre, il génère un jeton de confirmation par e-mail. Vraiment pointer cela un ou deux parce que je suis absentément dans le passé sont une ignorance dure. J'ai copié le code de l'un et en mettant l'autre et n'a pas pu. J'ai passé une heure à essayer de comprendre pourquoi ce code jeton ne le ferait pas. Permettez-moi de continuer dans le système. C'est parce qu'il s'agit de deux mécanismes différents grâce à un mécanisme de hachage différent qui est utilisé. Je voulais juste pointer cet orteil au cas où, vous savez, vous ne l'auriez pas vraiment remarqué avant. Celui-ci est donc une confirmation par e-mail et celle-ci est réinitialisée par mot de passe. Très bien. Je suis sûr qu'il y en a d'autres. Si vous vous contentez d'utiliser l'espace de gestion ou de contrôle et probablement de stéréotyper Tolkien, vous verrez toutes les différentes options qui peuvent apparaître dans la chaîne de sécurité des mots de passe, GMail, changeful, number, etc. cetera. Donc, en fonction de la situation dans laquelle vous devrez peut-être générer un code Tolkien pour confirmation, il est probable que vous en ayez un prêt à l'emploi. Très bien ? Ainsi, après avoir généré cette réinitialisation du mot de passe, Tolkien, il va de l'avant et génère à nouveau cette URL vers le mot de passe de réinitialisation. Ensuite, il distribue cet outil de messagerie, quelle que soit l'adresse e-mail figurant dans le fichier de cet utilisateur, puis il passe à l'écran de confirmation du mot de passe. Donc, la confirmation du mot de passe ou la confirmation du mot de passe oublié, tout ce qui fait est que vous savez, vérifiez votre e-mail afin que vous puissiez le modifier , le rendre amusant, le rendre un peu plus convivial. C'est à vous de décider. Encore une fois, nous ne nous concentrons pas sur l'esthétique, nous nous concentrons simplement sur le plan de travail de tous nos éléments d'authentification. Ensuite, sur le Réinitialiser le mot de passe, nous avons un formulaire qui vous demande votre adresse e-mail, pour que votre mot de passe confirme votre mot de passe, puis le mot de passe de réinitialisation après l'envoi verra trouver par e-mail. Si l'utilisateur est nul, ce qui signifie que nous ne les avons pas trouvés. Nous les dirigeons vers l'écran de confirmation de réinitialisation du mot de passe. Une fois de plus, nous leur donnons de l'espoir pour que vous puissiez toujours comprendre comment vous voulez gérer cela, n'est-ce pas ? Sinon, nous voulons trouver leur enregistrement dans la base de données, puis réinitialiser leurs mots de passe. Est-ce que c'est si facile d'utiliser une réinitialisation de points de gestionnaire, un boss ou l'évier ? Nous obtenons l'utilisateur, nous connaissons le code jeton en fonction de l'URL, puis nous donnons le nouveau mot de passe. Et une fois que c'est réussi, nous affichons la page de confirmation. La page de confirmation, bien sûr, accédez simplement à nos suggestions pour vous connecter. C'est bon ? Encore une fois, vous n'avez même pas besoin de les éradiquer à moins que vous n'ayez l' intention de modifier leur disposition. Et si vous souhaitez modifier le flux de travail comme nous l'avons mentionné pour le mot de passe oublié. C'est donc vraiment tout pour implémenter la fonctionnalité de mot de passe oublié. Et pour moi, le noeud du problème est de faire fonctionner ce service de messagerie électronique qui existe. Vous ne remarquerez même pas que les choses fonctionnent plus fort. Supposons un magasin. 19. Mettre en place un verrouillage de compte: Très bien les gars, donc nous poursuivons notre parcours à travers la bibliothèque d'identité et tout ce qu'elle nous offre. Et dans cette leçon, nous allons implémenter cette fonctionnalité de verrouillage. Maintenant, c'est un bon moyen d'améliorer la sécurité en verrouillant un utilisateur qu'il saisit est encouragé trop souvent. Et c'est en fait une grosse colline qui gagne des attaques par force brute. Lorsqu'un attaquant a peut-être un nom d'utilisateur ou un mot de passe et essaie à plusieurs reprises d'entrer dans le système avec divers mots de passe potentiellement erronés. Ce que nous allons donc faire, c'est modifier les options ici afin de savoir que nous avons les options nécessaires pour activer la sécurité par mot de passe. Si nous regardons un peu plus loin, nous pouvons ajouter des options dot Lakota. Et nous pouvons voir si c'est autorisé pour les nouveaux utilisateurs. Quelle est la période par défaut sur le nombre maximal de tentatives d'accès échouées. J'ai donc dit oui, cela permet aux nouveaux utilisateurs. J'ai la période par défaut pour le point temporel cinq minutes. Bien sûr, les règles métier détermineront ce que vous faites et le nombre maximum de tentatives échouées est de trois. Après trois tentatives ratées, nous les avons enfermés 45 minutes. Et nous ne nous soucions pas que vous soyez un nouvel utilisateur. L'option est donc là. Mais quand je vais à la connexion, vous verrez que le code, nos propres cheveux ne complimentent pas les options. Donc dans le sable dans la méthode asynchrone de connexion au mot de passe du point Manager, vous voyez ici local en cas d'échec est par défaut, par le NO, c'est ce qui a été généré, il est défini sur false. Nous devons donc changer cela en vrai pour qu'il sache que nous voulons que vous agissiez de manière stricte. Non, on peut en quelque sorte bosser cette partie pour peut-être en faire un peu plus. Très bien, alors que voulons-nous faire lorsque l'utilisateur est verrouillé ? Donc, à ce stade, s'ils le font trois fois, ils vont le faire, le résultat va dire LaCo, cette personne, s'il s'agit de bacs verrouillés, va rediriger vers un pH local, ce qui va probablement voir haut, vous sont enfermés. Attendez quelques instants. On peut toujours se battre pour que les patients voient ce qui est, ce qui est exactement affiché dessus. Mais sans l'échafauder, ce que nous allons faire, c' est injecter nos expéditeurs de courriels. Le problème, c'est que vous voulez informer votre utilisateur qu'il a été verrouillé. Nous allons donc simplement injecter un e-mail à l'expéditeur. Et le moyen rapide de le faire est simplement de le placer dans le constructeur, puis d'utiliser des points de contrôle, puis de le laisser créer un champ assigné, puis de suivre la convention de dénomination. Nous utiliserons simplement le trait de soulignement pour l'expéditeur de l'e-mail. On y va. Alors, à l'intérieur, le résultat est verrouillé, nous avons dit que nous allons avoir un journal CSV indiquant que le compte a été verrouillé. Ensuite, je vais trouver l'utilisateur. Jusqu'à présent, nous avons toujours trouvé une base d'utilisateurs sur l'adresse e-mail. Maintenant, je peux trouver par nom, qui prend le nom d'utilisateur entré, n'est-ce pas ? Donc, si vous survolez le ventilateur par son nom, vous voyez qu'il veut le nom d'utilisateur. Ainsi, lorsque nous trouvons cet utilisateur, nous ne sommes pas en mesure d'obtenir l'adresse e-mail. Cette étape est donc facultative si vous choisissez routiner cet e-mail en tant que nom d'utilisateur et adresse e-mail, si vous choisissez une routine, ils n'auraient pas à effectuer cette étape supplémentaire. Mais parce que nous nous connectons à l'aide d'un nom d'utilisateur, à ce stade, je dois trouver ce que c'est ? Je dois trouver les enregistrements des utilisateurs. Je peux obtenir l'adresse e-mail pour envoyer l'outil de messagerie. Donc je reçois juste mon expéditeur, envoie cet objet de l'e-mail, puis message HML pour que l'objet soit verrouillé, une information conique, ce que vous voulez, qui est sujet à B. Et puis mon e-mail dit que vous avez a été bloqué de votre compte pour des tentatives non valides de deux minutes. Si ce n'était pas le cas, veuillez réinitialiser votre mot de passe car il s'agit peut-être d'une violation. Bien sûr, votre message peut être aussi clair que nécessaire pour informer l'utilisateur que c'est ce qui arrive à ses cônes. Et ensuite, vous pouvez savoir rediriger cet utilisateur vers le mot de passe oublié ou les dollars vers la page d'accueil ou vers une autre page juste pour voir verrouillé, quoi qu'il soit, vous pouvez le déterminer complet. C'est donc mon flux. Juste pour vous donner une idée des possibilités à ce stade. Maintenant, ce que je vais faire, c'est tester ça. Donc, sur l'écran de connexion, je vais juste boucher le mot de passe que je connais. Et pendant ce temps, je vais passer à la base de données et je vais chercher la table des utilisateurs de cacahuètes. Et puis je vais faire défiler vers la droite où vous verrez Lakota local activé et accéderez aux cônes de champ. Très bien, donc ce cône est censé s'incrémenter à chaque tentative ratée. Il s'agit donc de la tentative numéro un. C'est bon ? Et quand j'actualiserai cette table et que j'y jetterai un coup d'œil, ceux que vous verrez ici que le champ actuel a augmenté d'un. Je vais donc ressentir deux fois de plus délibérément. Et voyons ce qui se passe. C'est donc moi qui me redirige vers le mot de passe oublié. Si je retourne dans la base de données et que je regarde, non, tu verras que Maya Cone dit que j'ai été lactose. Donc, Lakota l'autorise, c'est vrai ? Oui. Et j'ai été verrouillé parce qu'aucun lock-out n'a de valeur. Donc, cette valeur est essentiellement le temps de non, fonction de la durée que j'ai dit, c' est-à-dire cinq minutes. Et ensuite, si nous vérifions notre serveur SMTP, notre client ou autre, nous verrons que nous avons reçu l'e-mail indiquant qu'il n'y a pas eu de violation. Bien sûr, pour cela, nous pourrions faire tout le mot de passe oublié, générer le lien et envoyer ce lien dans le mot de passe afin que l'attaquant puisse être redirigé ici. Et même s'ils ont essayé de saisir à nouveau l'adresse e-mail et de la soumettre, nous demandons alors l'adresse e-mail, mais ils doivent se connecter avec un nom d'utilisateur. Quoi qu'il en soit, cependant, la dynamique de l'attaquant est arrêtée là. Ils ne peuvent rien aller de l'avant. Mais alors l'utilisateur recevrait en fait les e-mails pour dire réinitialiser le mot de passe ou comme je l'ai dit, cet original voyant suivre ce lien pour réinitialiser votre mot de passe. Comment pouvons-nous y mettre ça ? Ainsi, à ce stade, ils peuvent toujours faire tout cela et être en mesure de gérer leur propre destin. Ce sont donc de petites idées. Encore une fois, je ne fais que vous montrer de quoi le système est capable. La mise en œuvre réelle est relative aux besoins de votre entreprise. 20. Mettre en place l'authentification à deux facteurs: Très bien, dans cette leçon, nous allons envisager activer l'authentification à deux facteurs. Donc, l'authentification à deux facteurs dans la plupart des systèmes, moins cette fois est vraiment facultative. Certains cas le rendent obligatoire à ce tarif, ou tout au moins prêt à l'emploi, nous pouvons le rendre facultatif pour l'utilisateur. Et ils peuvent accéder à leur compte d'utilisateur et l'activer ou désactiver cette volonté. La première étape de notre intérêt dans ce mouvement ou dans la réalisation de ce mouvement consiste donc à configurer le lien pour accéder à la page Gérer pour l'utilisateur. Donc, l'euro original qui n'était qu'une URL est bienvenu. Le nom d'utilisateur ne sera pas adapté à l'identité de zone C is B aller à SBP, un index de gestion copropriété, et le titre est le kilométrage. C'est très bien. Et ensuite, la texture signifie la même chose. Voyons donc ce que nous obtenons quand nous faisons cela. Ainsi, une fois connecté, nous pouvons toujours cliquer sur l'administrateur, savoir qu'il s'agit d'une URL et que nous serions navigués vers la direction, disons un panneau de gestion pour l'utilisateur. Bien sûr, il peut échafauder les discours et pour savoir quoi se battre, suffit de regarder dans l'URL pour voir quels sont les noms de page. Très bien, mais quand, quand il les a éraflés, vous pouvez les modifier afin qu'ils puissent permettre à l'utilisateur d'être en charge de son propre profil. À ce stade, ils peuvent mettre à jour leur e-mail, modifier leur mot de passe à volonté et activer l'authentification à deux facteurs. Et cet onglet leur permet en fait de supprimer leurs propres colonnes. Très bien, pour que vous puissiez leur permettre de faire tout cela ou vous pouvez les restreindre selon vos besoins. Revenons maintenant à la page d'authentification à deux facteurs et cliquons sur l'application d'authentification assis. Et maintenant, on va nous présenter l'instruction. C'est donc ce que l'utilisateur voit dès la sortie de la boîte. L'identité que nous utiliserons avec cette authentification à deux facteurs qui nous a été fournie par Microsoft Authenticator ou Google authentifie est disponible pour les appareils Android et iOS. Maintenant, j'ai déjà les applications sur mon téléphone. Donc, si vous souhaitez vous aventurer dans cette voie et bien plus loin que je ne le suggère, allez-y et obtenez l'un ou l'autre pour votre téléphone. L'instruction suivante indiquerait que scannez le code QR ou saisissez cette clé dans votre bifacteur désactivé. Ensuite, ils navigueront pour faire de la documentation sur la façon de faire fonctionner le code QR. Donc, nous allons vraiment le faire ensemble. La documentation pour moi est donc très simple : nous devons intégrer cette bibliothèque dans notre projet. Donc, si je clique sur ce lien, verrai que nous pourrons télécharger cette bibliothèque. Alors allez-y et téléchargez ça. Et ensuite, dans notre projet, nous pouvons sauter vers la racine. Et dans notre dossier, je vais simplement créer un nouveau répertoire et appeler cela un passif. Bien sûr, il peut être plus précis. Et nous allons faire glisser les deux fichiers JavaScript dans le dossier de la bibliothèque. Nous avons donc besoin de QR code dot js. Et si vous faites glisser l'autre, c'est juste la version complète du minified, n'est-ce pas ? Nous avons donc QR code dot js. Ensuite, nous allons prendre ce fichier JavaScript ou ce code ici ou là, et créer un nouveau fichier appelé QR ab.js dans le dossier JS racine. Je suis donc juste en train de suivre les instructions comme Microsoft me le dit, je ne fais rien, tout l'art dans la région ici, mais nous le faisons ensemble. Donc, nouvel élément, je veux un fichier JavaScript, qui sera trouvé sur le web, un peu, ou un fichier JavaScript. Et je le nomme comme ils l'ont suggéré, QR ab.js. Ensuite, nous le collons dans ce fichier. Maintenant, une fois que nous aurons fait tout cela, nous allons trouver la page qui affiche ce torus, qui est l'authentificateur d'activation, ce qui signifie clairement que nous devons éradiquer cette page. Donc non, je suis allé sauter sur nos cônes, aller ajouter ou vous savez, la routine passe déjà à l'identité. Et nous allons chercher la page, une barre oblique deux-points, un authentificateur d'activation de barre oblique. Et comme je l'ai dit, beaucoup de pages avec lesquelles vous voudrez peut-être interagir, comme 12, peut-être que je les charge pour les désactiver. S'ils peuvent l'activer, vous voudrez probablement les autoriser à le désactiver. Et ensuite, vous voudrez probablement gérer notre modification de l'index avec les propriétés de navigation, vous savez, des choses comme ça, quoi que vous vouliez faire. Je vais donc aller de l'avant et inclure ces trois. Il se peut que je n'interagisse pas avec eux tous, mais je les laisserai tomber. Ensuite, nous obtiendrons un nouveau dossier avec tous les nouveaux fichiers. Je vais donc passer au dossier en question. Et sous cette section de scripts, nous allons ajouter les nouveaux chemins. Je viens donc de copier ça à partir de Microsoft Bulks. Laissez-moi juste m'assurer que mes chemins. Donc c'est le code QR slash lib slash et je vais juste utiliser min. Et puis celui-ci est slash js slash QR. Vous pouvez donc toujours utiliser Control Space pour obtenir ce supplément. Maintenant que nous avons toute cette configuration, permettez-moi de recharger cette page. Et voudriez-vous regarder ça ? Et tout ce que nous avons un code QR qui s'affiche. Bien sûr, il peut modifier la page et supprimer cette frappe parce que nous n'avons plus besoin de cela et nous voudrions le dire à l'utilisateur. Je vais donc juste scanner le code QR maintenant avec mon téléphone. J'aimerais pouvoir vous le montrer dans les deux. C'est ce qui se passe. Non. Ensuite, je peux insérer le code de vérification tel qu'il est sur mon téléphone et vérifier. Et j'y vais. J'ai donc maintenant activé l'authentification à deux facteurs pour cet utilisateur particulier. Nos cônes connaissent ces devis de récupération que vous suggéreriez probablement à l'utilisateur ou lorsque vous voyez l'avis, veuillez les garder en sécurité car si le contraire fonctionne, vous devez vous rendre sur le système, vous pouvez toujours les utiliser récupérer les codes pour accéder. Maintenant, c'est tout ça. Si je regarde dans la base de données et que je regarde l'enregistrement de cet utilisateur, je verrai que l'indicateur activé à deux facteurs n'est pas défini sur true. Cela signifie que lorsque nous revenons au code pour le processus de connexion, il y a quelque chose qui se produira lorsque nous nous connecterons avec succès. Cela signifie donc que nous nous sommes connectés avec succès. Et puis cela va voir si cela nécessite une authentification à deux facteurs, puis rediriger. Vous voyez ça ? Donc non, le résultat ne reviendra pas. J'ai réussi, du moins la première fois qu'il reviendrait régulièrement car nécessite une authentification à deux facteurs, qui les enverra ensuite sur cette nouvelle page de connexion. Connectez-vous avec deux FA, que nous n'avons pas étouffés. Nous pouvons échafauder, mais voyons d'abord ce que nous sortons de la boîte. Je suis donc allé charger, charger et essayer de me connecter à nouveau avec le même utilisateur. Cliquez sur Connexion, puis vous voyez qu'il n'est pas nécessaire de naviguer la nouvelle page de connexion avec deux FA me demandant mes devis d'authentificateur à ce stade, moi ou l'utilisateur, comme vous le savez, le contexte déterminera, ferait maintenant mettez ce qui m'est affiché dans mon Authenticator up. Je mets donc mon code et je clique sur Connexion et je suis connecté. Et c'est ainsi que nous avons activé l'authentification à deux facteurs. Maintenant, ce processus est relativement simple pour quelqu'un qui est averti de la technologie. Vous voudrez donc peut-être réfléchir à la meilleure façon d'activer quelque chose qui se trouve dans votre organisation. Mais le but de l'authentification à deux facteurs est quelque chose que vous connaissez, et quelque chose que vous possédez, n'est-ce pas ? Donc, quelque chose que vous savez, serait un nom d'utilisateur et un mot de passe standard, mais quelqu'un d'autre pourrait savoir ce que vous savez. Cependant, la probabilité que quelqu'un ait ce que vous avez est encore plus réduit, car maintenant cet appareil est plus dans votre position. Bien sûr, il faudrait beaucoup plus d'efforts pour que quelqu'un puisse accéder à Sarah Colin en raison de la disparité entre les deux points de contact. Ce n'est pas infaillible, mais il s'agit d'un autre niveau de sécurité et de complexité du processus de connexion que vous voudrez peut-être considérer ou reconsidérer en fonction de votre audience. Rappelez-vous toujours qu'une sécurité accrue implique une facilité d'utilisation réduite pour certaines personnes. Très bien, il faut parfois trouver cet équilibre entre convivialité et sécurité. Cela dit, quelles sont vos règles commerciales ? Assurez-vous de prendre les meilleures décisions pour vous-même et pour vos utilisateurs, ainsi que pour la longévité et la sécurité de votre application. Cela dit, si l'utilisateur revient à gérer ses enchères et clique sur l'authentification à deux facteurs, il a alors la possibilité de désactiver la fonction FA. Et cela réinitialiserait tout. Et il y aurait à nouveau besoin de tout mettre en place à partir de zéro. Donc, vous savez, vous leur donnez un certain pouvoir et ils leur permettent également de gagner une certaine affaire. Une fois de plus, trouvez cet équilibre entre convivialité et sécurité. 21. Examen de la section: Très bien, les gars. Vous avez donc franchi un autre jalon. Nous avons examiné pas mal de choses. Une prise pour obtenir leur propre erreur d'échafaudage. Très bien. J'espère que vous ne voulez pas rencontrer, mais au moins nous l'avons traversé pour que vous sachiez quoi faire. Nous avons également envisagé d'échafauder plus de pages et de remplacer notre propre code personnalisé, en particulier le code de connexion qui a été conçu uniquement pour avoir hâte de voir avec l'échafaudage ou le code Alt of the box boilerplate que ces choses beaucoup plus complexes, mais en utilisant des bibliothèques tierces très puissantes. Vous voyez donc que la page de connexion utilise le gestionnaire de connexion et qu'elle a toutes ces autres options et nous avons renforcé certaines d'entre elles comme avec le cabas de verrouillage, j'y suis retourné et j'ai ajouté plus de CO2. Il s'agit d'une pause et d'une réplication possible si vous le souhaitez. Mais j'ai mis le lien vers les réinitialisations de mot de passe en une seule fois pour qu'il y ait une navigation, ils seront invités à réinitialiser leur mot de passe via leur e-mail. Toutes ces choses merveilleuses. Nous avons également envisagé d'échafauder davantage de pages, de les personnaliser, regarder ce que chaque morceau de code fait et, encore une fois, comprendre comment nous pouvons les modifier en fonction de nos besoins réels. Donc, ce que je vais faire, c'est supprimer nos pages d'authentification originales. Nous n'en avons plus besoin. Ce sont des choses du passé. Et maintenant, nous avons un code plus robuste et un code beaucoup plus sécurisé pour gérer nos opérations. Nous avons également envisagé l'extension du pipeline de fonctionnalités d'identité pendant toute la fin de semaine. Nous avons donc examiné les options intégrées, oui, nous en avons ajouté d'autres pour le mécanisme local, mais ensuite nous avons ajouté la validation personnalisée du mot de passe et nous avons examiné le fichier. Nous pouvons ajouter plus de fonctionnalités personnalisées selon nos besoins. Et en gros, quel que soit le costume que vous ajoutez. Donc, si vous l'avez ajouté, laissez-moi peut-être voir le validateur. Donc, si nous ajoutions le rôle de validateur, il vous dirait en fait que vous avez besoin. Et j'ai roulé le validateur C vous indiquera toujours quelle interface la classe personnalisée que vous allez créer doit hériter. Vous pouvez donc entrer correctement, déploré, non ? Dans ce cas, nous avons mis en place un validateur de mot de passe, ou je l'appelle le service de données valide par mot de passe. Et c'est juste hériter du mot de passe i via les données. Oui, si je lance le validateur, vrai, vous avez moi, ce validateur je, ça. Vous avez donc plusieurs options. Et en fonction de votre scénario, vous pouvez simplement utiliser cette interface, implémenter la méthode et mettre en place toute la logique dont vous avez besoin pour accomplir vos règles métier. Donc, avec tout cela dit et fait, ce que nous allons faire maintenant, c'est vérifier notre code. Comme d'habitude, nous rendons notre message aussi clair que possible, puis nous allons simplement nous engager et synchroniser. Et je vais rester dans les parages. Nous allons juste entrer dans plus de viande et plus de concepts sont sécurisés ou appliqués tout le week-end. 22. Aperçu des sections: Très bien, les gars, bienvenue. Je suis vraiment content que tu sois là. Cela signifie que vous vous engagez à comprendre travail d'autorisation et d'authentification de l' OMS dans les applications Dotnet Core. Jusqu'à présent, nous avons déjà examiné un certain nombre d' autorisations où nous avons regardé la photo. Vous pouvez simplement placer ce filtre HTTP juste au-dessus de votre page ou de votre action, ou de votre contrôleur, ou même de vos composants fonction de la saveur de l'application Dotnet Core que vous utilisez. Et en disant simplement autoriser, vous prévoyez que tout organisme qui essaie d'accéder au contenu à ce point d'extrémité ou à cet endroit, s'authentifie d'abord avant de pouvoir continuer. Donc, si nous le voulions, c'est sur chaque page. Nous savons déjà que nous avons cette configuration que nous pouvons mettre au démarrage. Il est légèrement différent si vous utilisez une application MVC. Mais c'est à peu près la même chose que nous forçons cet auteur à filtrer sur chaque emplacement de notre application. Nous avons également examiné le fait que s'il y a des endroits particuliers que nous voulons laisser le champ ouvert ne nécessitant pas d'authentification, et nous n'avons besoin que de vannes avec l'autorisation anonyme. Et ce serait probablement moins que le nombre d'emplacements que vous souhaitez posséder. Donc, pour moi, il est toujours plus facile de le faire globalement, puis de faire des exceptions. Nous avons donc déjà examiné ces éléments de base, donc nous allons les revoir dans la prochaine leçon. Mais pour toute cette section, nous allons examiner toutes les fonctionnalités car vous disposez de l'autorisation de base, c'est ce que nous avons examiné et que nous examinerions. Vous avez également des rôles, vous avez des réclamations, des stratégies. Nous allons examiner tous ces éléments et comment ils peuvent se combiner pour créer une application très sécurisée en fonction des besoins de votre entreprise. Alors restez dans les parages. Nous avons beaucoup à explorer dans cette section. 23. Mettre en œuvre l'autorisation de base: Très bien, nous sommes donc de retour et nous voulons juste un récapitulatif rapide de la partie d'autorisation. Donc, dans la revue, sachez que nous avons examiné les différentes saveurs que nous pouvons faire dans une application Razor Pages, quelle extension ou application dotnet Core où une, nous pouvons la définir globalement. Et si nous ne voulons pas rester dans le monde entier, nous pouvons toujours accéder à la page spécifique ou au code derrière ces perles spécifiques. Il s'agit donc de la page d'index des catégories. Et je peux dire auteur I. Donc, dans ce cas, je n'ai pas autorisé explicitement. Il est déjà défini dans le monde entier. Il s'agit d'une catégorie, vous voudriez donc l'autoriser car vous souhaitez probablement que cela soit dédié à ce que les administrateurs du système peuvent faire par opposition aux utilisateurs ordinaires. Cependant. Donc, non, cela change comme à cause du filtre global. Et si je voulais le faire explicitement, nous disons simplement auteur, auteurs, c'est très bien. Mais si je veux autoriser globalement et ensuite exempter comme nous l'avons fait pour la page d'index des publicités. C'est parce que les utilisateurs réguliers devraient pouvoir accéder aux sites Web de mes petites annonces et consulter la liste des publicités sans avoir besoin de s'authentifier. Peut-être que s'ils veulent en créer un, alors je voudrais qu'ils s'authentifient à ce moment-là, je n'autorise pas l'anonymat. Vous devez donc vous authentifier, signer un cône intérieur, puis créer pour que je sache qui vous êtes, n'est-ce pas ? Voilà donc le genre de décisions que vous devez prendre. Mais en plus de tout cela, parce que nous avons déjà examiné tout cela au niveau de base. Je veux vous montrer quelques exemples d'applications MVC et de blazer ups que j'ai construits dans le passé. J'ai donc mentionné que cela pourrait sembler légèrement différent car MVC, ils utilisent des vues, des contrôleurs et des modèles. Les placements de ces tuiles d'autorisation se feraient donc dans le contrôleur. Et c'est un peu différent de la page parce que la page oui, elle a sur Git et elle a sur post et vous avez ce que vous appelez un gestionnaire. Mais tous ces éléments sont relatifs à la page. Ce n'est donc pas comme si je pouvais autoriser l'En-Gedi. J'ai essayé d'écrire comme on arrive ici. Et ensuite, n'autorisez pas un autre gestionnaire. C'est soit autoriser la page entière, soit je ne le suis pas. Donc, si j'essaie de proposer comme juste le gestionnaire que vous voyez ici va le signaler et dire : Eh bien, cela ne peut pas être appliqué au gestionnaire. Il doit être appliqué à l'échelle mondiale. C'est donc soit vous avez accès à la page et aux centaines sur la page, soit à vos os. Donc, c'est tout ce que MVC est désolé. Ce sont toutes les pages Razor avec une poignée, c'est tout un scénario d'autorisation. Cependant, voici un exemple d' application MVC que j'avais faite et que j'ai fait celle-ci dans mon cours, complétez ASP.Net Core et développez différents développements de mots, n'est-ce pas ? Dans ce cas, nous nous en sortons bien grâce à l'autorisation , mais pas aussi en profondeur que dans ce cours. Mais vous verrez ici qu'il s'agit d'un contrôleur et un contrôleur a des actions différentes, n'est-ce pas ? Ainsi, chaque oxygène aurait une vue. Je vais juste passer par là au cas où vous n'êtes pas très familier avec MVC. Chaque contrôleur aurait donc une action et l'action a une vue correspondante. Donc, si vous regardez dans le dossier des vues, vous allez toujours trouver, ou vous devriez toujours trouver un dossier portant le même nom qu'un contrôleur. Il s'agit donc d'un contrôleur domestique. Voici un dossier personnel dans le dossier des vues. Ensuite, l'action d'index, il y a cette vue d'index qui va avec cet axone. Cela signifie donc qu'un contrôleur a accès à plusieurs pages à la fois. Je peux choisir d'autoriser toutes les pages qui peuvent être associées à ce contrôleur. qui signifie que juste en disant auteur car vous devez vous connecter pour accéder à la page d'index, à la page de confidentialité et probablement même à la page fléchée, n'est-ce pas ? Toute page qui est une action qui est ici avec une page ou une vue associée est automatiquement autorisée par ce que je fais. Maintenant, si je voulais ne pas autoriser tout le contrôle sur l'autorisation, peut-être juste une vue particulière, alors je peux juste placer cette inondation directement au-dessus de cette action. Cela signifie donc qu'aucun index ne nécessite d'authentification. Ce que la confidentialité et les erreurs ne font pas. C'est essentiellement comme ça que cela fonctionne dans une application MVC. Donc, même si j'ai dit autoriser anonyme, tout ce contrôleur, alors cet auteur comme avec surcharger leur faible anonyme pour cette action particulière, n'est-ce pas ? Donc, chaque fois que nous allons à l'index, vous devez vous authentifier. Mais en raison de la faible anonymat uniformément, il y avait un auteur global comme filtre. Ensuite. Cela permettrait au contrôleur domestique de permettre aux utilisateurs anonymes d'y accéder. C'est donc essentiellement ce à quoi cela ressemble dans une application MVC. Je ne sais pas si, vous savez quel que soit le modèle que vous préférez, quel que soit le modèle que vous préférez, ils sont tous les deux à peu près la même chose. Vous n'avez qu'à apprécier les nuances pour pouvoir fonctionner correctement ? Non, l'exemple suivant. Il se présente sous la forme de mon blazer. Je le fais donc. Il s'agit d'une API de librairie où je fais celle-ci à ma vitesse sur un cours d'API de base et de blazer. Dans ce cours, nous passons par le développement d'API. Bien sûr. Et puis vous réalisez que notre développement d'API est de 12, tout comme MVC où vous avez vos contrôleurs et vous pouvez marquer directement au-dessus de ces points de terminaison d'API, à droite ou au-dessus de tout ce contrôleur, ou au-dessus de cela. comportement ou action, comme je l'ai décrit dans les applications MVC normales, afin que vous puissiez exécuter un parallèle entre une API et une application MVC quant à la façon dont vous gérez l'autorisation. Mais en ce qui concerne le blazer, lorsque vous êtes dans les composants sont non, je suis dans ce composant qui charge les auteurs. À l'intérieur de ce composant, je peux vous placer dans un attribut en haut du composant qui indique auteur. Et donc ceci, et c'est ce que je disais. Il est fondamentalement le même dans toutes les applications Dotnet Core. Voyons donc quelques nuances. Donc, ici, je le verrais réellement à l'intérieur du composant lui-même. Et le composant est à peu près hybride de oui, balisage HTML ou RA, Marco, frère et C-sharp. C'est à peu près à quoi ressemble notre composant. Donc, au cas où vous, vous ne l'êtes pas forcément familier. C'est ce qu'il apporte à la table. Donc, ici, je peux voir que je veux autoriser ces composants, ce qui signifie que si vous essayez d'y accéder, vous devez vous connecter. Une autre chose cool, un blazer de bateaux et quelque chose comme ça est disponible dans les applications Dotnet Core alors que je soulève sur NBC. C'est nous qui sommes le point de vue autorisé ? Donc, ici, je vois juste une vue autorisée et je spécifie que si la personne appartient à l'administrateur du rôle, elle peut voir cela. C'est à peu près tout ça. Doit. Nous faisons quelque chose de similaire à celui de la page de connexion, non de la page de connexion dans le composant partiel de connexion. Dans nos pages Razor vers le haut, nous disons que certaines choses ne sont affichées que si la personne est connectée ou si nous savons que nous pouvons étendre cela. Nous pouvons toujours dire que si la personne est dans notre rôle ou quelque chose du genre, nous pouvons faire ces choses fantaisistes ici. Donc je vous montre juste que toute l'autorisation est en quelque sorte, elle diffère de très minute entre les différents modèles d'application dotnet. En fin de compte, une fois que vous appréciez la pensée qu' une fois que vous avez mis l'autorisation ou que vous avez mis ce filtre global, tout doit être autorisé. Ensuite, vous êtes déjà sur votre blé sur l'autorisation permanente. Maintenant, ce que nous voulons faire, c'est aller plus loin. Vous verrez donc ici que cela spécifie ce que nous appellerons un rouleau, n'est-ce pas ? C'est dire que les rôles sont égaux d'administrateur. Je peux parler de la gestion de mes congés et je peux vous montrer dans le, lequel est dans l'allocation des congés. Il autorise automatiquement uniquement les règles pour l'administrateur. Très bien, il y a des moments où vous ne pouvez pas spécifier que je veux autoriser uniquement ce rôle pour le contrôle ou ces actions, ou dans notre cas, ces pages. Dans notre cas, nous voulons nous assurer que seuls les administrateurs peuvent créer des catégories sont des catégories d'interrupteurs. Mais n'importe qui, un utilisateur régulier, devrait pouvoir interagir avec les publicités. C'est donc notre prochaine mission. Quand nous reviendrons, nous comprendrons comment étaient les règles du charbon. Nous ajoutons des rôles aux utilisateurs et la façon dont nous les utilisons pour appliquer ce qu'ils peuvent et ne peuvent pas faire. 24. Ajouter des rôles à les utilisateurs: Très bien les gars, donc non pour discuter des rôles sur la façon dont nous pouvons implémenter des lignes dans notre application sur les impies montent, cela nous aide. Notre rôle est donc essentiellement comme une autorisation. Quel est votre chemin dans votre entreprise ? Êtes-vous un patron, êtes-vous un travailleur, et cetera, en fonction de votre rôle, vous pouvez faire certaines choses, vous faites certains privilèges, etc. Ainsi, dans la vraie vie, nous voulons reproduire ce genre de rigueur dans notre application. Lorsque nous parlons de règles ascendantes aux utilisateurs et de s'assurer qu'ils ne peuvent pas faire certaines choses. Le moyen le plus simple d'entrer directement dans le système est donc de semer. C'est parce que d'une manière générale, lorsque vous commencez à créer une application, vous avez la prévoyance de savoir que ce sont les règles qui peuvent être utilisées ? Oui, plus tard, il peut envisager de les gérer via notre interface utilisateur. Des balles, non ? Pas de fraude pour être cool, nous allons juste essayer de les envoyer dans la base de données à l' aide d'Entity Framework et de la façon dont ils sont semis ou ED. Ainsi, à l'intérieur de la configuration, il y a déjà deux gaz de configuration où nous avons semé. Je vais donc simplement reproduire ce genre de construction avec les règles, et donc je vais juste ajouter une nouvelle classe. Je vais appeler la configuration de départ des rôles. Je vais juste passer à la configuration des semences parce que c'est tout ce que je vais vraiment m'en servir. Et je vais le laisser hériter de la configuration de type entité du rôle d'identité. Très bien, vous devrez peut-être ajouter quelques instructions d'utilisation après cela, mais nous devons ensuite implémenter cette interface. Notez donc que nous utilisons une règle d'identité déjà regardée sur la photo concernant l'identité de l'utilisateur de l'entité, Rhode, etc. Si vous avez choisi de remplacer cela comme dans, vous utilisez votre propre type de rôle comme dans l'ensemble du type d'utilisateur Vous pouvez toujours remplacer le rouleau d'identité par n'importe quel type de rôle que vous avez créé après coup. Donc nul à l'intérieur du constructeur, je vais avoir deux rôles, client et administrateur et tout. Vous regardez le code qui se trouve sur mon écran et vous vous demandez probablement quel sujet. C'est très bien. Permettez-moi d'expliquer tous les réseaux qui se produisent ici. Nous avons donc déjà le modèle pour la façon dont nous faisons le CD ou, comme nous disons, un point constructeur contient des données et un nouvel objet, puis nous remplissons les morceaux. Nous avons donc construit ici la nouvelle règle d'identité de leurs données. C'est bon ? Ensuite, nous remplissons tous les champs qui sont au moins les champs que nous jugeons absolument nécessaires. Vous avez donc un système simultané qui a un autre domaine, mais je n'ai pas vraiment besoin de celui-ci dans cette situation. Donc, la règle d'identité, l'ID est égal, je viens de bien téléphoner parce qu'ils utilisent void comme clé primaire dans les tables d'identité, non ? Donc, vous pouvez simplement aller trouver un bon et l'utiliser. Et je viens littéralement de changer quelques personnages dans ce même bien pour que vous puissiez le reproduire. C'est comme ça que vous pouvez utiliser votre propre bien, c'est très bien. C'est une table vierge, donc vous avez le luxe de mettre ce que vous voulez. De plus, cette table ne change pas nécessairement beaucoup, sorte que la probabilité de s'écraser plus tard est considérablement réduite. Je l'ai donc. Et puis en nom, généralement, je veux dire que le nom est une chaîne. Vous auriez eu de la ficelle. Vous dites peut-être client. Une fois que je ne veux pas faire, c'est écrire toute cette guirlande lumineuse statique, c'est notre corde magique. Donc, pour réduire cela, j'ai créé un autre dossier appelé constantes. Dans ce cas, des constantes pleines d'ont ajouté un fichier appelé règle, puis rouler. Ce type a juste des constantes, des cordes. Autant de règles que vous voudrez peut-être avoir juste des noms correspondants et la valeur réelle de ce flux magique une fois. Très bien, puis plus tard sur vous juste pour référence, c'est donc le nom est égal à rho dot costumer, qui va renvoyer la chaîne statique nom normalisé du client. Fondamentalement, c'est la version en majuscules activée, quel que soit le nom que nous avons vu avec le nom d'utilisateur et le nom d'utilisateur ou e-mail normalisé et normalise le courrier électronique dans la table des utilisateurs d'ASP NET. Donc le nom normalisé ici, nous voyons juste, Donnez-moi à propos du client, mais mettez-le en majuscules. C'est beaucoup plus propre, je pense, non ? Et plus tard, nous faisons la même chose pour les administrateurs. Autant de règles que nécessaire, vous pouvez répliquer ces étapes. Maintenant, la prochaine étape consiste à faire RMI grisâtre. Vous devez donc vous rappeler que nous devons mettre à jour contextes DVI de notre application pour lui faire savoir qu'il devrait savoir comment cette configuration est gradée sur null. peut que vous ayez plusieurs configurations de départ l' avenir, car vous voudrez peut-être voir l'utilisateur. Il se peut que vous souhaitiez initier la police associée à cette règle et vous risquez de vous retrouver avec de nombreux fichiers de configuration. Ce que je vais donc faire, c'est réduire les lignes individuelles et les remplacer par celle-ci. point Modelbuilder applique des configurations à partir du type d'application d'assemblage, contextes DVI ou quel que soit votre contexte DB et votre objectif, et non pas à l'assemblage. Donc, c'est vraiment espagnol, citez quatre. Regardez dans l'assemblage actuel dans lequel se trouve le contexte DB et obtenez tous les fichiers de configuration associés. C'est presque tout ce que ça fait. Très bien, alors il suffit de scanner automatiquement et de trouver que tout est un fichier de configuration associé à une entité que je connais , et cetera. Et avec cette seule ligne, il suffit d'appliquer automatiquement tous ces fichiers de configuration. Faites-le nous savoir, lancez nos Migrations. Je vais ajouter la migration des semences rurales, qui, comme prévu, nous donne ce fichier de migration indiquant qu'il est portable pour insérer des valeurs dans notre table de rôles réseau SBI. Très bien, donc c'est notre identifiant qui sera mis en place, puis il a automatiquement fait le système simultané et le nom du ministère Peter et du client. Très bien. fois cela fait, nous pouvons faire une mise à jour. Et non, nous avons mis à jour le système avec succès. À ce stade, vous souhaitez probablement avoir un administrateur dans le système distinct utilisateurs ou quiconque s'inscrit normalement devrait être un utilisateur de roquette, notre client autre, puis nous contrôlons les administrateurs. Ainsi, en fonction de vos règles commerciales et de votre stratégie, vous devrez peut-être utiliser différentes façons de procéder. De manière générale, vous voudriez avoir un administrateur système. Nous avons donc déjà des utilisateurs que nous avons déjà nommés admin. Et je vais vous montrer exactement comment les associer directement à notre rôle dans la base de données. C'est donc un peu Manuel et ensuite nous examinerons comment le client de semences du week-end. Et ensuite, par extension, nous examinons comment définir la règle une fois que la personne s'est inscrite. Commençons donc par l'ISBN déposé par les utilisateurs. Et nous allons examiner l'ID des lignes. Ainsi, les règles ASP NET et les utilisateurs du réseau SBI. Nous allons donc examiner les données des deux tables. Nous verrons ce que nous attendons, n'est-ce pas ? Administrateur contre les utilisateurs. Il y a donc une autre table ici, qui est une table de relations plusieurs-à-plusieurs ou un lien entre les utilisateurs et les rôles appelés rôles utilisateur ASP NET. Donc celui-ci prend en fait l'ID utilisateur et l'idée de rôle et dit que ces deux choses que j'ai associées est qu'un utilisateur peut avoir plusieurs rôles. Ce n'est donc pas qu'un utilisateur ne doit être que l'un ou l'autre. Il peut prendre en charge plusieurs. Mais c'est encore une fois, à la discrétion des besoins de votre entreprise. Je voulais donc passer un test administrateur à cet utilisateur. Je ne veux pas entrer dans les rôles d'utilisateur et je vais dire que cet ID utilisateur, puis je vais passer aux rôles et je vais prendre cet ID d'administrateur et je vais dire cet ID de règle. Une fois que j'ai fait ça, je suis nul. L'utilisateur administrateur est considéré comme un administrateur de notre scène pour avoir ce rôle dans notre système. Eh bien, c'est à nous de dire ce que ce rôle peut et ne peut pas faire. Mais en ce qui concerne le système, cet utilisateur a ce rôle. C'est aussi simple que ça. Mais le symbole ne signifie pas toujours pratique car il n'y a pas d'utilisateur qui va venir ici et le faire. Laissez-nous donc sauter pour regarder vraiment ce qui se passe dans le système. Donc, quand quelqu'un l'enregistre, je fermerai tous les onglets. Lorsque quelqu'un s'inscrit, c'est quand nous devons l'associer à la partie rouleau. Revenons donc à la page d'inscription. Ce que nous allons faire lors de la publication, c'est que si la création de l'utilisateur a réussi, nous devrons les ajouter à la règle. On peut donc dire que les informations de connexion ont créé un nouvel utilisateur, un appel avec basilar, c'est très bien. Sous ce journal, nous allons voir un gestionnaire d'utilisateurs de poids. Nous devons donc avoir le gestionnaire d'utilisateurs, Nous connaissons l'existence de votre polarité. Et puis on verra un point. Et si je tape simplement une règle, vous verrez toutes les choses potentielles que vous pouvez faire avec le moniteur utilisateur par rapport à la règle. Vous pouvez donc ajouter au rouleau. Vous pouvez, désolé à ce sujet. Vous pouvez obtenir Roll, obtenir les utilisateurs dans une règle particulière. Vous pouvez vérifier si nos utilisateurs dans un rodéo, tant de choses. Très bien, donc dans ce cas, nous voulons ajouter au rouleau, ainsi de suite pour modifier un évier. Et puis cela prend deux paramètres, l'utilisateur que nous venons de créer et le rôle. Et je vais oui, ce que je peux toujours taper administrateur, si je l'ai mal orthographié. À ce moment-là, je déboguerais pendant un moment en me demandant pourquoi cette chose ne fonctionnera pas parce que j'ai probablement raté le vieux et moi, et j'en suis inconscient. Peut-être que quelqu'un d'autre viendra vous voir mal orthographié. Je suis donc allé dire « roll », qui est notre croix constante et je ne le vois pas. Alors, laissez-moi revenir ici. Très bien, donc moins de défauts et je vais juste le tailler moi-même. Si vous avez déjà vu l'IRS, c'est très bien. Premièrement, je dois rendre cela public. Je ne l'ai pas rendu public. Et deuxièmement, le nom de fichier est une règle. Les noms de classes doivent également être des lignes. Très bien, essayons encore une fois. Donc, les rôles, et si je contrôle les points nuls, nous pouvons obtenir son droit. Donc les rôles, l'administrateur de points ou le client. Je peux donc dire ajouter deux lignes et les lignes, client et je pense que c'est plus lisible, c'est compiler en toute sécurité. Bien sûr. n'y a donc aucune erreur concernant l'orthographe ou toute ambiguïté concernant la règle utilisée ici. Très bien, alors faisons un test rapide et inscrivons un nouveau client. Et j'ai quelques erreurs. Je dois commencer par l'orthographe ici. Je suis donc en train d'enregistrer ce nouveau client. Et une fois que nous avons pris ce discours et que nous savons qu'il fonctionne. Donc, si je reviens aux bases de données C1, nous avons notre nouveau client ici, le client. Et vous voyez que la carte d'identité commence par quelque chose. Que ce soit bon, si nous regardons dans le tableau des rôles des utilisateurs, je supprime le précédent que nous avons fait. Non, vous verrez que nous avons ce client, nous avons donc cet identifiant client, ainsi que l'ID de rôle correspondant au rôle de client. Et c'est à peu près tout. Donc non, tous ceux qui passent par cette authentification particulière, désolés, ce processus d'enregistrement particulier sera toujours ajouté au client. Maintenant, à ce stade, vous voudrez peut-être envisager, vous savez, si vous voulez différemment ou si vous souhaitez autoriser des personnes à s'inscrire en tant que rôles différents. Parce que vous l'avez parfois dans des systèmes pouvant servir à bord. Peut-être que votre rôle pourrait représenter ce département, n'est-ce pas. Ou quelque chose comme ça. Vous voulez donc l'utiliser pour identifier de quel département ils sont, quel rôle ils souhaitent avoir dans le système afin que, lorsqu'il n'y a que l'utilisation de ce rôle particulier. À ce moment-là, vous commencez à vouloir regarder le rôle du gestionnaire, ce qui vous permet d'interagir un peu plus avec la règle est stable. Vous pouvez donc toujours aimer, eh bien, avoir l'utilisateur et les gestionnaires descendants, vous avez un rôle rural et gérez ou relatif à l'identité ou quelle que soit votre classe personnalisée. Et puis il peut simplement aller de l'avant et l'injecter dans votre page d'inscription. Et je suppose qu'à ce stade, vous savez déjà comment créer une liste déroulante et toutes ces choses. Je ne me concentre donc pas sur l'interface utilisateur à part. Donc ce que j'essaie de 0, c'est que vous pouvez réellement configurer votre liste de rôles ici en tant que nouvelle liste de sélections. Ce rôle TX de manager dots. Et puis il peut juste obtenir les rôles comme une liste de règles juste là. Et vous pouvez le mettre en liste si vous le souhaitez, vous pouvez filtrer par. C'est au moins une offre provenant de la base de données. Donc, si vous êtes en phase avec la façon de manipuler des listes à l'aide de méthodes liées et étendues sur des méthodes, alors ce sera le même principe ici. Vous pouvez donc le faire. Ensuite, vous avez le nom comme champ à sélectionner et le nom comme objet affiché. Et là, vous pouvez lister toutes les règles sur votre page pour que vos utilisateurs puissent sélectionner celle qu'ils souhaitent. Donc, pour donner plus de praticité à cette suggestion, j'ai fait de modifier le modèle d'entrée. Et j'ai ajouté une propriété sélectionnée, quatre rouleaux et un pour le rôle requis. Ils ont donc cette identification de la ligne qu'ils veulent pour pouvoir soumettre avec succès. Nous savons que c'est déjà juste. Donc, dans les fgets, je vais dire entrée, qui est l'objet du modèle d'entrée que le pH utilisera. Je l'initialise dans une nouvelle instance où les règles seront égales à une nouvelle instance du rôle, gérant les rôles adultes. Le point qui obtient le nom en tant que sélecteur, la valeur du sélecteur et l'affichage. Dans C-Sharp dans les dernières versions de CSRP, je peux juste dire nouveau, juste dire ce que j'ai fait ici. Au lieu de dire un nouveau modèle d'entrée, encore une fois, le péché vous, mais parfois pour plus de lisibilité, je le garde toujours. Et bien que les adultes utilisent nécessairement, c'est parce que le constructeur peut être implicite. Mais c'est en dehors du problème. Nous voulons donc nous assurer que nous l'avons là et que nous ne les ajoutons pas au rôle au lieu de coder la règle en dur, nous allons prendre le rôle qui vient de l'entrée. C'est bon ? Bien sûr, nous devons répéter cette attribution de la liste des règles si quelque chose a l'impression que le pH puisse recharger la liste avec succès. Voyons donc à quoi ça ressemble. Donc, sur la page Enregistrer elle-même, tout ce que j'ai fait était d'ajouter une balise de sélection. Très bien. contrôle de formulaire a donné les éléments provenant de la liste des rôles de points en entrée et il est destiné au rôle. Et ensuite, il souhaite que par défaut sélectionne le rouleau souhaité et il ne répertorie pas les règles provenant du système. Très bien, c'est simple. Donc, si je m'inscris en tant que client et tant que client, ou si je me laisse m'inscrire en tant qu'administrateur. Et je vais voir Admin One et remplir ça. Et puis j'ai cliqué sur registre. Très bien, donc nous cliquons sur la page de confirmation et si je reviens au projet et que je regarde dans la table des utilisateurs, nous voyons que nous avons admin 1 et id 0, 0, 1, b. Disons que si je passe à la table des rôles, maintenant je vais voir que j'ai 000 001 BE. Et c'est l'ID administrateur qui peut le faire croiser si vous le souhaitez. Mais ce que je veux dire, c'est que c'est ainsi que l'utilisateur choisirait sa propre règle et s'intègre à une règle particulière. Bien sûr, encore une fois, vous pouvez toujours manipuler ces listes. Donc, si c'est le cas, j'ai le rôle d'administrateur et d'autres règles basées sur l'utilisateur, mais vous ne voulez pas que les utilisateurs sélectionnent administrateur, vous venez d'exclure de cette liste lors du chargement. Donc, avec tout ce qui est dit et fait, c'est ainsi que vous obtenez des règles pour ajouter des règles aux utilisateurs. Sachez que lorsque nous reviendrons, nous examinerons comment restreindre ce que certaines règles peuvent et ne peuvent pas faire. 25. Mettre en œuvre une autorisation basée sur le rôle: Très bien les gars, donc dans cette leçon, nous voulons voir comment nous pouvons savoir commencer à mettre en œuvre les règles et restrictions basées sur les règles de notre application. Donc en ce moment j'ai un site de pores et vous pouvez voir que j'ai fait son petit lifting à la une. Juste un petit truc informatif. Mais si nous examinons les publicités et nos catégories, nous constatons que les catégories nécessitent plutôt une autorisation ou une authentification, alors que les publicités ne le sont pas. Cependant, sur les publicités, je peux facilement faire des modifications courantes, regarder les détails ou supprimer une annonce, n'est-ce pas ? Ce sont donc des petites choses qui, bien sûr, seraient des drapeaux rouges dans n'importe quel système. Et vous voulez pouvoir restreindre ce que certaines personnes peuvent faire. Et nous sommes certains que les gens peuvent y aller parce qu'à ce stade, je peux entrer ici en tant que client tout en étant capable de manipuler toutes les catégories. Nous voulions donc nous assurer que l'accès aux catégories est limité aux utilisateurs administrateurs uniquement. Et nous voudrions probablement masquer la possibilité de manipuler la publicité ou au moins de modifier ou de supprimer une publicité ou uniquement des utilisateurs administrateurs. Ainsi, une modification nous aidera à modifier le code derrière le fichier car il y a une page est une page, qui pourrait une fois de plus facilement être l'action ou même le composant rasoir. Et l'autre nous demanderait de modifier les rayons de page réels, ce qui serait comme avec l'application MVC sur une page de CV. Et à peu près la même chose pour un élément blazer. Je voulais donc commencer par ce que je pense être les fruits suspendus inférieurs, qui modifient le code derrière. Tout ce que je veux faire, c'est m'assurer que lorsque la personne qui essaie de se connecter, lorsqu'elle vient essayer de se connecter, doit être administrateur. Très bien, laissez-moi les logos et je vais revenir à notre code d'application. Et tout ce que j'ai à faire pour les catégories est de spécifier l'auteur car nous devons donc revenir à notre auteur comme filtre. Mais je vais lui faire savoir que le rôle, donc vous verrez ici que vous pouvez spécifier l'auteur a des attributs avec le schéma d'authentification Wanda. Vous pouvez donc le restreindre s'il s'agit d'un cookie ou s'il ne s'agit pas d'un cookie, d' autoriser ou d'interdire, etc. Je peux spécifier une stratégie. Nous examinerons les politiques plus tard. Et je peux également spécifier les rôles. Remarquez donc ses rôles, n'est-ce pas ? Je peux donc constater que plusieurs rôles peuvent accéder à une zone particulière. Donc, quand je dis des règles ici et que je dis égales, je lui donnerais une corde. Maintenant, cette chaîne serait comme si elle prenait une liste séparée par des virgules, dit ici qu'elle nous obtient. Il s'agit d'une liste de règles délimitées par des virgules qui sont autorisées à accéder à la ressource. Donc, si je voulais une virgule administrateur, client, coma, faire évoluer une règle de virgule à autant de règles que je veux autoriser une ressource particulière, je peux simplement virgule, les séparer tout au long du discours. Le danger des cordes magiques et les écrire comme ça. Le, de la Matzah la plupart des fois, vous le verrez juste écrit. Dans cette situation, je veux que seul l'administrateur puisse accéder aux catégories. Je sais donc qu'il n'y en a qu'un. Je peux maintenant simplement dire des règles, qui est ma classe statique. Puis dites « administrateur ». Et puis, car tant d'autres rôles sont Xudong, il suffit de concaténer les cordes au fur et à mesure que nous les assemblons. Des méthodes plus avancées comprendraient la création d'un filtre d'autorisation personnalisé, que nous pourrons examiner plus loin. Mais en ce moment, je ne fais que rester simple et je vous montre comment vous autoriseriez une règle particulière dans l'ensemble de votre application. Donc maintenant, si nous accédons à la page des catégories et essayons de nous authentifier en tant que client, nous allons obtenir cette page d'accès refusé. Maintenant, cette page que nous n'avons pas créée, c'est une fois de plus une de ces pages que nous pouvons échafauder et modifier si nous le souhaitons, mais elle se trouve dans le répertoire oblique des cônes obliques d'identité. Très bien, alors que nous nous sommes authentifiés en tant qu'utilisateur ou en tant que client dans cette situation, nous ne pouvons pas passer à cette ressource particulière. Cependant, nous pouvons aller ailleurs en tant que personne authentifiée, mais pas sur la page des catégories. Autant de pages, d'actions ou de contrôleurs que vous ne voudriez pas beaucoup. Vous pouvez ajouter cette autorisation avec la spécification des règles. Et pas quand j'essaie de faire la même chose avec admin one, qui est un utilisateur que nous venons d'ajouter via le registre. Laissez les utilisateurs leur propre règle. Nous pouvons désormais accéder aux catégories. Très bien, donc c'est comme ça que ça marche. Maintenant, passons aux publicités. Donc oui, nous voudrions que les publicités soient ouvertes au public. Cependant, je souhaite uniquement que les clients puissent en créer de nouveaux, et je souhaite uniquement que les administrateurs puissent les modifier ou les supprimer. Ainsi, les gens réguliers peuvent venir voir la liste des publicités. Ils peuvent cliquer sur les détails. Bien sûr, mais seulement moins d'utilisateurs authentifiés vous permettraient de créer le vôtre. Je ne veux même pas qu'un administrateur puisse créer le sien. Je souhaite que les clients puissent créer leurs propres annonces, et je souhaite uniquement que les administrateurs puissent les modifier et les supprimer. Ainsi, sur la page d'index des publicités, il suffit de modifier cette section qui affiche les nouveaux boutons. Donc je vais juste dire au signe si l'utilisateur point. N'oubliez pas qu'un utilisateur représente notre principal utilisateur pour l'utilisateur connecté, n'est-ce pas ? Donc je vais juste dire que si l'utilisateur est en rouleau, on y va. Et là encore une fois, nous saisissons simplement le nom du rôle que nous ne voulons pas nécessairement faire. Nous préférerions utiliser nos constantes. Donc, les rôles, je devrais inclure cet espace de noms dans le port de vue. Donc je vais juste dire que l'espace de noms ne fait que l' importation de la vue, puis ajoute l'instruction using pour cela. Ainsi, chaque fois que vous souhaitez utiliser notre classe ou n'importe où ailleurs dans les vues, il vous suffit de la déposer dans les importations de vues ou vous pouvez toujours la déposer sur cette page en particulier. Donc des rôles, des points. Et je veux vérifier s'il s'agit d'un client. Affichez ensuite cela, Create New, et je vais juste corriger le formatage ici. Très bien, je ne veux afficher cela que si les utilisateurs jouent le rôle de client. De même, pour modifier et même supprimer, et vous pouvez modifier cela. Je veux dire, je pourrais écrire deux déclarations. Je ne veux pas écrire deux déclarations. Je vais simplement déplacer les détails vers le haut, et ensuite je vais avoir une instruction if, si l'utilisateur est inscrit, puis nous vérifions s'il est dans le rôle d'administrateur, alors nous pouvons afficher ces deux liens vers eux. Très bien, donc c'est tout. Vous pouvez donc commencer à modifier ce que certains utilisateurs voient par rapport à ce que les autres utilisateurs voient. Disons que tout le monde est authentifié, certains sont des nœuds. Dans ce cas, la personne qui regarde cette publicité n'est pas achetée. Laissez-moi commencer par non. C'est vrai ? Mais si vous êtes authentifié et que vous occupez un rôle particulier, alors vous voyez certains de l'administrateur infrarouge que vous voyez ce que vous voyez, d'accord ? Et si vous n'êtes ni l'un ni l'autre, vous ne verrez rien de tout ça. Jetons donc un coup d'œil à ce que nous obtenons après ces mois. Très bien, donc je suis en train de naviguer vers la vitesse de la publicité en tant que personne habituelle. Je ne suis pas authentifié d'aucune manière, de forme ou de forme. Je vois la liste de nous et je peux toujours accéder à leurs détails et c'est très bien. C'est le résultat attendu, n'est-ce pas ? Maintenant, si j'enregistre notre identifiant désolé, en tant que client ou que je l'ai navigué en tant que client, je verrai que je peux aller de l'avant et mettre ma propre publicité si je le souhaite. Mais je suis toujours limité à voir les détails d'autres annonces que d'autres utilisateurs ont pu créer. Maintenant, si j'interviens en tant qu'administrateur, j'aurai maintenant le pouvoir de manipuler ces publicités. Je peux donc toujours regarder les détails, oui, mais ils peuvent également les modifier et les supprimer. Mais je ne peux pas en créer un en tant qu'administrateur car c'est la règle système, pas un rôle client. Une fois de plus, je crée mes propres règles métier pour ces scénarios, mais je vous donne simplement leurs idées sur la façon dont vous pouvez mettre en œuvre les protocoles requis ou de sécurité que nous allons examiner dans le système de votre organisation. C'est ainsi que cela se fait au niveau le plus élémentaire. 27. Réclamations de l'accès en application: Très bien, discutons donc de la configuration de l'autorisation basée sur les revendications. Rappelez-vous donc que nous venons de passer par ce que sont les revendications. Les revendications sont des informations sur l'utilisateur actuellement connecté. Ainsi, plus nous disposons de revendications, plus nous pouvons prendre de décisions pour savoir si nous devons autoriser notre restriction à l'utilisateur à partir d'une ressource ou d'un point de terminaison particulier. Donc, ce que je vais faire, c'est travailler avec la page de création de la publicité. Voyons qu'aucun utilisateur de moins de 18 ans n'est autorisé à créer une annonce. Très bien ? Vous ne devriez donc pas pouvoir créer de publicité à moins d'avoir au moins 18 ans. Maintenant, nous savons déjà comment les restreindre en utilisant le drapeau autorisé en haut. Et nous allons examiner ses politiques, mais je veux vous montrer différentes façons dont ils peuvent réellement interagir avec les nettoyants. Parce que nous avons vu que vous pouvez accéder aux nettoyages au lieu d'avoir besoin d'accéder à la base de données. Que se passe-t-il si vous deviez accéder à la réclamation ? Prenez une décision en fonction de cette réclamation, si dans ce cas il s'agit de l'accès refusé, vous savez, de leur montrer l'accès refusé. Par exemple, REO a une autre règle commerciale dont vous avez besoin pour mettre en œuvre ce que nous voulons simplement savoir quelle est la valeur de la réclamation. Disons donc que je voulais avoir l'âge minimum de l'utilisateur actuel. Je peux commencer par dire que var est l'âge minimum est égal à l'utilisateur, ce qui représente l'objet utilisateur qui revendique l'objet principal dans les contextes HTTP. Donc, l'utilisateur point trouve en premier. Avant même que je vous montre l'amende d'abord si vous dites user.email, voir les réclamations venir en face. Vous voyez plusieurs identités que vous pouvez déterminer sont en rouleau. Vous pouvez voir les revendications, et cetera, et cetera, non ? Tous ces éléments sont disponibles pour vous. Donc, si vous faites des réclamations, réclamations ne sont en réalité qu'une collection de réclamations. Vous pouvez donc utiliser cela pour dire, d' abord, nos valeurs par défaut sont simplement interrogées, interroger la liste de la même manière que vous auriez interrogé quelque chose dans la base de données. Je pourrais dire Klimt pour que notre expression lambda par défaut q point. Et puis j'ai pu trouver que c'est ce que je veux, c' est équivalent, donc le type ici est une chaîne. Et c'est pourquoi notre utilisateur réclame une classe constante. Je n'ai donc pas à taper ces chaînes statiques tout le temps. Il dira donc que l'utilisateur prétend que son âge minimum. Et une fois que je l'ai compris, ce ne serait pas une revendication. Donc, bien sûr, pour obtenir la réclamation, je ne sais pas si elle existerait réellement. Je vais juste faire des points d'interrogation. C'est donc ma coalescence nulle où il dirait : S'il n'existe pas, suffit de retourner null, sinon, essayez d'obtenir la valeur si elle existe. Très bien, c'est donc une façon de trouver l'âge minimum. Vous voyez donc ici que nous pouvons interroger la liste des revendications comme nous le ferions pour n'importe quelle autre liste en C sharp. Maintenant, une alternative à cela aurait été la première avec laquelle j'ai commencé, ce qui serait la première découverte. Donc, user.name trouve en premier. Et puis à l'intérieur de cela, nous pourrions simplement mettre la chaîne représente cette revendication. Donc trouver d'abord prend le type comme paramètre et il retourne juste null si pas beaucoup son téléphone. Et puis le type de retour est toujours propre. Cela signifie donc que je devrais encore essayer d'obtenir cette valeur. Bien sûr, cette valeur sera une chaîne, donc nous n'avons toujours pas cette valeur en tant que booléen. C'est donc une autre chose que vous devriez prendre en compte. Et bien que la chose aussi est que cette méthode de recherche première pourrait également prendre une expression lambda similaire à ce que nous avons fait avec l'amende en premier. Je vous montre donc que toutes vos options sont bonnes pour connaître vos options, mais en même temps, il est bon de s'installer sur une norme pour que lorsque tout le monde doit travailler ensemble, tout le monde est au même quart, non ? Ce sont donc différentes façons d' accéder à une revendication particulière, puis à la valeur qu'ils crient ont. Et puis, bien sûr, en fonction du type de données que vous attendez ou que vous devez traiter, vous devez effectuer votre conversion. Donc ce que je vais faire, c'est avoir cette déclaration if qui indique si l'âge minimum est équivalent à null, qui signifie que le type propre n'existe probablement pas pour cet utilisateur. Ou si après l'analyse, nous obtenons la valeur false, nous voulons rediriger vers la barre oblique d'identité, notre accès à la barre oblique deux-points est refusé. L'accès refusé est donc un pH qui nous est disponible via la suite d'identités de pages. Bien sûr, si vous ajoutez une autre pièce sur laquelle vous vouliez qu'ils aillent, vous pouvez simplement les lire à ce moment-là. C'est donc tout ce que nous faisons. Laissez-nous donc faire un test avec notre client que nous savons qu'il est le 18. Ainsi, après s'être connecté avec le client de moins de 18 ans, puis que nous avons tendance à créer de nouveaux, nous constatons que nous ne sommes pas redirigés vers l'accès refusé. Vous ne pouvez pas y accéder car vous avez moins de 18 ans ? Non. J'essaie encore cela en mode débogage ou le même utilisateur, je viens de frapper les points d'arrêt sont mis un point d'arrêt plutôt sur nos instructions if afin que nous puissions arrêter. Et je peux vous montrer ce qui se passe réellement en coulisses. Nous avons donc notre principe de réclamation des utilisateurs. Si nous étendons cela, nous constatons que nous avons toutes les revendications. Si nous examinons les revendications, nous voyons que nous avons les standards que nous connaissons, puis les revendications coutumes. L'âge minimum est donc faux comme prévu. Et donc, lorsque nous en arrivons à ce stade, il est faux, donc nous n'avons même pas besoin de vérifier que c'est le cas. Donc, cette vérification des connaissances était vraiment que je sois trop prudent. Mais à ce stade, étant donné que nous contrôlons les revendications, c'est ce que nous avons fait lors de la dernière leçon. À aucun moment, je ne devrais utiliser une connexion sans la revendication particulière, n'est-ce pas ? Donc, à moins que quelque chose ne change l'ensemble du système. Et c'est pourquoi nous avons une légère régression sur les tests et les tests unitaires pour nous assurer que ces choses ne se produisent pas, n'est-ce pas ? Donc, si c'est l'avantage minimum, je peux vraiment faire avec tout ça. Mais après avoir analysé cette chaîne, nous vérifions si elle est équivalente à false et c'est pourquoi nous passons à la redirection Return. Vous pouvez donc tester cet utilisateur de patine dont la date de naissance les placerait au-delà de 18 ans. Et puis réessayez ce scénario et voyez ce qui se passe. C'est donc l'étape numéro 1 de la façon dont nous pouvons utiliser les réclamations pendant l'exécution du système. Lorsque nous reviendrons, nous examinerons comment mettre en œuvre des politiques. Donc, bien sûr, il serait difficile de mettre ce genre de logique ici, là et partout. Vous ne voudriez pas nécessairement le faire. Nous allons donc commencer à examiner les politiques que nous pouvons utiliser nano pour faire respecter que des revendications particulières doivent être présentes et probablement même l'étendre à C, doivent avoir certaines valeurs avant que ces utilisateurs puissent être admis à certains endroits. 28. Mettre en œuvre une autorisation basée sur les politiques: Très bien les gars, donc la leçon que nous sommes ici, nous discutons pourquoi il n'est pas pratique d'avoir ce genre de logique partout à chaque fois que nous voulons appliquer certaines restrictions basées sur des revendications. Dans cette leçon, nous allons donc examiner cette construction appelée politique. Ce voyage commence donc dans le fichier CSS de démarrage où nous devons ajouter une autorisation à notre service, son Batman. Donc je le fais juste après l'ajout d'identité par défaut et lu avant que les artères des pages autorisent le filtre. Donc je dis juste que j'autoriserais et les options que j'y mets seraient d'additionner la politique. Et vous verrez que j'ai des politiques, le point est minimum. Nous examinons donc cela dans quelques-uns. C'est juste une autre constante que j'ai créée. Vous pouvez donc simplement aller de l'avant les options que la politique publicitaire, point de politique est l'âge minimum. Ensuite, nous avons une expression lambda dans laquelle nous voyons que la politique exige une revendication, puis nous avons la référence de nos revendications à cet avantage minimum, puis à la valeur que nous attendons. Donc, la syntaxe générale pour ajouter une stratégie et ajouter les exigences pour définir une stratégie au niveau le plus élémentaire, quelque chose comme ça, n'est-ce pas ? Nous allons juste ouvrir un bloc d'options. Nous voyons une politique d'addition de points d'options. Nous donnons un nom à la politique. Cela aurait donc pu facilement être un flux esthétique. Tout ce que je fais vraiment, c'est référencer une chaîne de constantes d'une classe appelée politiques, les arrangements militaires avec les photos aussi. Alors rappelez-vous qu'à l'origine notre classe de revendications utilisateur, qui est notre classe statique avec toutes nos constantes, chaînes sont à l'origine, je l'avais sur d'autres services, mais non, je veux plus de constantes de nature similaire, non ? Donc, au lieu de les mettre tous sur l'identité de l'avoir déplacé dans son propre dossier, modifiez l'espace de noms en conséquence également, non, ce sont des constantes, puis des revendications utilisateur, puis nous avons des stratégies qui le rejoignent dans cet espace de noms. stratégies vont donc simplement être stockées au nom des différentes stratégies que nous voulons appliquer dans toutes les applications. Donc, au démarrage, je fais juste référence à des politiques étranges, des politiques. Le point est l'âge minimum, qui est un âge minimum de chaîne. Et puis je démarre une expression lambda où je vois que ce sont les options, sont les configurations pour nous en politique. Donc, je vois ici que les points de politique nécessitent un nettoyage avec ce nom, qui est l'âge minimum. Et la valeur. Et la vérité, c'est que vous pourriez en fait énumérer la valeur potentielle, donc il n'est pas nécessaire qu'il s'agisse d'un seul fichier. Vous pourriez simplement séparer les différentes valeurs possibles que cette crème doit avoir pour que cet utilisateur soit considéré comme un candidat légitime pour mener une action particulière. Que se passe-t-il si vous vouliez plus d'une réclamation dans une politique particulière ? Ici, vous pouvez voir à la stratégie et ensuite pour ces expressions lamda, nous allons commencer sur un bloc d'objet, n'est-ce pas ? Ensuite, vous pouvez voir des points de stratégie. Ensuite, commencez simplement à ajouter toutes les configurations de cette stratégie en conséquence. Donc, vous n'avez qu'un point-virgule et ensuite vous avez stratégie nécessite une autre revendication avec ces ensembles de valeurs, et cetera, etc. Il est donc très facile de mettre en œuvre ou de créer une stratégie que l'application connaîtra qu'elle existe. Je vais donc revenir à la simple que j'avais auparavant où nous voyons juste adopter la politique appelée « âge minimum » est appelé âge minimum, puis exiger que cette politique exige que cette affirmation, désolé, soit l'âge minimum avec une valeur vraie. Maintenant que nous avons défini la politique, nous devons la mettre à profit. Allons donc sur notre page Créer. Et si vous regardez en haut, j'ai ajouté un auteur comme filtre. Et au lieu de cela, autorisez le filtrage des stratégies égales au nom de la stratégie. C'est donc une autre raison. Un bateau fait les classes constantes et essaie d'éliminer ou de réduire autant que possible les extrêmes. Parce que si vous avez une faute de frappe ici, il serait beaucoup plus difficile de comprendre pourquoi cela ne me laisse pas passer, même si j'ai clairement la politique sur les données propres dit que j'ai besoin, c'est juste parce que vous utilisez probablement le mauvais choix. nom de stratégie ou nom de stratégie mal orthographié. Il est donc toujours bon d'avoir ces chaînes dans des constantes partout, elles sont au même endroit. Vous n'avez donc pas besoin de les utiliser partout et ensuite, vous n'avez qu'à faire une référence. Donc, simplement en faisant cela, nous avons éliminé le besoin d'entrer manuellement dans les nettoyages de l'utilisateur, puis d'essayer de déterminer quelles sont les valeurs. Parce que non, notre mécanisme autorisé fera tout cela pour nous. Donc, partout où nous voulons appliquer une politique particulière, c'est tout ce que vous devez faire. Et bien sûr, une fois que vous placez un filtre au-dessus d'une page, il remplacera la stratégie par défaut qui aurait été installée dans votre application. s'agit donc que de l'autorisation par défaut. Donc, une fois que vous l'avez mis là. L'argent, eh bien, il va le remplacer et dire, eh bien, je veux autoriser en fonction de cette politique. Alors que nous sommes sur ce sujet, je vais vous montrer une autre façon d'appliquer ces filtres globaux, ce qui serait une façon plus globale de le faire dans n'importe quelle application principale. Alors, où il a regardé le fait que si nous ajoutons des pages Razor, cela aurait trait à cela. En particulier si nous le faisons avec MVC, la syntaxe serait légèrement différente. Mais alors je peux supprimer tout cela et revenir aux avocats des pages ou des contrôleurs AD et des vues et savoir que j'ai ce bloc d'autorisation avec des politiques toutes alignées, nos options étant en ligne, Je peux ajouter une ligne d'option Je peux voir les options La stratégie Buck est égale à un nouveau générateur de stratégie d'autorisation. Ensuite, je dois aller de l'avant et inclure la déclaration d'utilisation. Et ensuite, sur ce projet de loi, nous allons simplement aborder quelques autres configurations. Donc le premier que je vais voir est de nécessiter un utilisateur authentifié. C'est donc moi qui suis assis au-dessus de la politique des robots avec des autorisations de travail complet. Et nous constatons que nous avons besoin de l'utilisateur authentifié. Et puis vous pourriez dire demander une réclamation. Donc ce serait comme je l'ai dit, global, ce ne serait pas personnalisé qu'un lakh supervise. Nous voulons cette option. Vous pouvez donc définir tout ce que vous voulez en tant que politique Buck d'autorisation globale sur ce qu'est la politique, dois-je faire lorsque ce que dois-je faire lorsque ce filtre autorisé ou un filtre anonyme faible n'est pas présent ? Donc, si l'on n'est pas en prison, de l'argent sauvagement, comme comment on l'a explicitement mis ici, alors que dois-je faire ? Très semblable à la façon dont nous venons d'avoir l'exigence mondiale d'autorisation ici. Mais vous allez devenir un peu plus granulaire avec cette méthode, car maintenant nous pouvons établir exactement quelles exigences, quels schémas, tout ce que nous voulons à la porte par défaut avant d'appeler Build. Et puis construisez sans mot à dire. C'est ma politique Buck d'automne. Chaque fois qu'il n'y a pas d'auteur comme filtre d'autorisation explicite avec des exigences spécifiques, c'est ce que je voulais faire. Nous avons donc deux choses maintenant. Statista, nous allons tester que la politique fonctionne. Quoi que nous venons de prouver sur cette page, lorsqu'un utilisateur a moins de 18 ans, il ne devrait pas pouvoir accéder à cette page. Et nous allons prouver que nous recevons toujours l'invite par défaut pour vous connecter pour tout ce qui est dit autorisé. Très bien, donc nous sommes ici dans notre application et fin de compte, je ne suis pas authentifié. Je suis allé dans les catégories. Et rappelez-vous que les catégories sont censées être. Il n'autorise pas l'anonymat. Ainsi, les publicités autorisent l'anonymat, que je suis toujours en mesure de parcourir car cela autorise filtre anonyme remplace ce qui dépasse la politique. Et quand je vais dans des catégories qui n'autorisent pas l'anonymat, je suis invité à me connecter. Cela fonctionne aussi loin que je peux le voir. Donc, lorsque je me connecte en tant que client de moins de 18 ans, le système peut être refusé parce que je suis un client dit que je devrais pouvoir obtenir les catégories, c'est très bien. Mais quand je vais à la publicité, je ne devrais pas pouvoir en créer de nouvelles car la politique est l'âge minimum. Donc, lorsque j'ai essayé d'en créer un nouveau, j'ai l'accès refusé. C'est vrai. la même façon. Alors, juste là. Je n'ai pas à dire manuellement retour, accès direct local refusé au système, la stratégie de secours, combinée à ma politique explicite que j'utilise pour protéger le discours, fait cela pour moi. Il vérifie la réclamation et elle l'a réécrite. C'est donc tout ce que vous avez vraiment à faire. Et vous voulez obtenir une certaine granularité avec certaines autorisations. Vous créez les revendications que vous connaissez, les besoins de la personne. Ainsi, une personne devrait pouvoir modifier ce qu'une autre personne devrait pouvoir modifier. Vous vous assurez simplement que ce sont les revendications dont on n'a besoin à aucun moment. Ensuite, vous protégez simplement vos différentes pages avec les stratégies que vous avez alignées dans votre fichier de démarrage. 29. Examen de la section - Réclamations et rôles: Très bien les gars, donc c'est un autre jalon et nous allons juste passer en revue ce que nous avons fait dans cette section. Nous avons donc examiné l'autorisation de base, nous sommes allés voir comment cela fonctionne dans un blazer tous les filtres étaient. Et dans notre startup, nous avions également examiné comment appliquer cet auteur comme filtre global sur toutes les pages Razor et, par extension, les options et les contrôleurs MVC si vous utilisez une telle application. Depuis lors, nous avons également mis en œuvre des politiques où nous savons comment le faire plus globalement sans mélanger et beaucoup dans la syntaxe, nous pouvons simplement faire quelque chose comme ça. Nous avons également envisagé de créer nos propres politiques basées sur les revendications. crèmes sont donc des informations que nous savons ajouter dynamiquement à l'utilisateur une fois que le week-end de connexion fait certaines déterminations en fonction des informations qu'ils ont fournies ou en fonction de leur utilisateur requis. Ensuite, nous pouvons ajouter ces revendications à cette identité ou principe des revendications avant que cet utilisateur ne soit réellement authentifié dans le système. Par conséquent, nous pouvons savoir mettre en œuvre des politiques qui nous permettent de restreindre ou d'autoriser certaines actions ou privilèges fondés sur les affirmations selon lesquelles ils ont des prisons. Nous avions donc également examiné les rôles. Nous avons examiné comment permettre à un utilisateur de sélectionner le rôle qu'il souhaite dans le système, puis comment nous les ajoutons à ce rôle par la suite. S'il est né pour leur permettre de diviser le rôle, vous pouvez simplement ajouter la règle à l'utilisateur une fois qu'il se connecte. Parce que pensez à des sites Web plus grands comme Amazon sur YouTube. Vous ne sélectionnez pas vraiment le rôle que vous souhaitez jouer avec des cônes YouTuber. Ils savent juste qu'une fois que vous avez créé un deux-points, vous êtes un utilisateur. Ils vous auraient donc automatiquement fait passer en tant qu'utilisateur. Ensuite, ils ont un autre mécanisme où ils ajoutent leurs propres administrateurs et autres lignes, etc. À ce moment-là, vous voudriez envisager de créer des valeurs sur le tableau de bord de gestion qui vous permettent d'avoir un contrôle total sur quelque chose de ce genre. Mais pour les utilisateurs qui arrivent sur Internet, vous leur donnez leur rôle dans le système, et c'est leur rôle à l'avenir. Donc, en fonction de votre modèle, vous savez comment gérer cette situation. Donc, en fin de compte, c'est tout pour cette section. Comme je l'ai dit, je sais que vous auriez vécu plusieurs choses. Ce n'est pas une chaussure unique qui convient à tous. Je ne fais donc que montrer différents scénarios et différentes façons de faire preuve de créativité et pratique quant à la façon dont vous sécurisez votre application pour vous-même et pour vos utilisateurs. 30. Aperçu des sections - Qu'est-ce que OpenIdConnect: Salut les gars, bienvenue. Dans cette nouvelle section, nous allons donc implémenter les fournisseurs d'identité OpenID Connect dans notre point d'accès. C'est une bouchée, mais je vais juste le décomposer pour vous. Je suis donc sur le site Web OpenID dotnet slash Connect et il fait directement en face de ce qu'est vraiment OpenID Connect. Donc, en un mot, il permet aux clients. Les clients étant votre site Web, vous êtes debout, quel que soit le fait que votre client ou vos utilisateurs utilisent ce site frontal, c'est votre client. Il est peu stressé de vérifier l'identité d'un utilisateur final fonction de l'authentification et effectuée par un serveur d'autorisation, ainsi que d'obtenir des informations de profil de base de l'utilisateur final, même manière que nos risques. En un mot, chaque fois que vous accédez à une application et cela vous permet de dire, envoyant notre identifiant avec Facebook ou Google, n'est-ce pas ? Je dois arrêter ce siège Potnia. Passez sur Google et vous devrez saisir vos informations d'identification ou peut-être que vous êtes déjà connecté à Google sur cette machine ou sur cet appareil. Et cela vous permet simplement de passer en revue et, et tout d'un coup, vous êtes connecté sur les nouveaux sites Web a toutes les informations fournies par Google. Google fournit un service OpenID Connect en tant que fenêtres, comme Facebook. Et nous en avons un peu regardé dans les parties précédentes où nous ajoutions tous ces services sur Twitter et Google, Microsoft et Facebook. Tous ces serveurs peuvent servir de serveurs OAuth. Donc, fournisseur d'authentification, désolé, donc dans cette section, nous allons réellement l'implémenter. Nous ne l'avons pas fait alors parce que c'était un peu tôt dans le match. Et je vous ai donné quelques techniques, mais nous allons passer en revue ces choses. Et ce que nous allons faire, c'est de nous concentrer sur le faire avec Google. Mais une fois que nous avons mis Google hors de la route, vous comprendrez au moins que si vous vouliez soutenir tous ces autres et que vous êtes prêt, donnez à vos utilisateurs toutes ces options, alors au moins vous apprécierez comment cela peut être fait. Donc, dans la section suivante, nous allons examiner comment obtenir la clé et le secret de Google. Et ensuite, nous serons entièrement intégrés à notre AP à l'avenir. 31. Inscription à la liste des identifiants Google OAuth: Très bien les gars, donc dans cette leçon, nous allons rapidement découvrir comment obtenir la clé Klan et un secret dont nous avons besoin auprès de Google pour nous permettre de nous authentifier sur les comptes Google. Vous pouvez désormais accéder à la plateforme Cloud en accédant à la console dot cloud dot google.com. Vous devrez vous connecter avec un compte Google, puis accéder à ce tableau de bord. Et cela serait similaire pour tous les autres fournisseurs. Vous devrez vous connecter avec un compte appartenant à ce fournisseur afin d'accéder au backend où il vous donne les clés, n'est-ce pas ? Ainsi, une fois que vous vous êtes connecté ou que vous avez créé un cône Googler et que vous avez accédé à un écran similaire à celui-ci. Vous voulez accéder aux informations d'identification, puis cliquez sur Créer des informations d'identification. Donc, si toutes ces options nous choisissons ID client OAuth, car c'est ce que nous recherchons. Ensuite, nous précisons quel type d'application. Je vais juste dire application Web où vous voyez que vous avez différentes options et vous pouvez lui donner un nom spécifique si vous le souhaitez, petites annonces de collègues SQL ou quel que soit votre projet. Ensuite, vous allez de l'avant et cliquez sur Créer. Et une fois que vous cliquez sur Creates, cela vous donnera cette carte d'identité et qui sécrète, et c'est tout. Vous devez donc copier ces valeurs. Et rappelez-vous que nous devons les utiliser dans notre application pour que vous vouliez les protéger, moins ce qu'ils ne chargent pas le JSON ou non, mais gardez-les en sécurité ou non, cela n' a pas de sens si vous essayez de copier le mien parce qu'à l'époque Vous faites ce cours, j'aurais détruit les preuves de toute façon. Je vous recommande donc de l'essayer, obtenir votre propre clé et votre propre secret, et vous pourrez ensuite avoir votre propre expérience contrôlée de votre côté. Ainsi, lorsque nous reviendrons, nous les intégrerons dans notre AP. 32. Ajouter Google Auth à application: Donc, après avoir récupéré nos clés, nous allons revenir à notre niveau supérieur et nous allons passer à la classe de démarrage où nous voulons ajouter un nouveau bloc que nous verrons des services qui ajoutent l'authentification. N'oubliez donc pas que la dernière fois ou plus tôt dans le cours, lorsque nous le faisons, nous avions ajouté Google aux services, le bloc d'authentification où nous indiquions que nous utilisions le cookie hors tension. Très bien, donc nous aurions pu l'enlever parce que nous avons fait toutes les choses qui ont géré tout ça. Eh bien, non, on peut y retourner. Et nous allons ajouter Google, n'est-ce pas ? Et quel que soit l'autre fournisseur, assurez-vous de disposer de la bibliothèque requise. Donc, pour celui-là, au cas où vous auriez peut-être supprimé les bibliothèques car nous ne l'avons pas utilisée. Vous devez absolument avoir Microsoft dot ASP, Core Authentication Google. Donc, si vous ne l'avez pas, vous pouvez simplement aller le trouver dans les paquets NuGet, n'est-ce pas ? Et j'ai toujours tous les autres paquets des autres fournisseurs que nous ne finissons peut-être pas par utiliser en ce moment. Mais ce sont les bibliothèques dont vous avez besoin au cas où vous choisirez l'une des options ci-dessus, et pas nécessairement Google comme je le démontre. Revenons donc au démarrage après l'ajout de Google veut dire Options. Ensuite, nous avons notre bloc d'objets où nous voyons les options Google. Cet ID de tendance est le suivant. Et le secret est que non, nous avons déjà discuté que c'est une mauvaise idée de mettre l'ID et la valeur secrète est morte au démarrage, l'alternative aurait probablement été les paramètres de l'application, mais ensuite entre les deux eux, nous allons certainement le piéger dans le contrôle de la source. Et s'il s'agit d'un contrôle source accessible au public, comme GitHub, le dépôt est public, alors c'est une très mauvaise idée. Donc, ce que nous voulons faire, c'est les ajouter au secret. Il vous suffit donc de cliquer avec le bouton droit sur nos projets. Ensuite, nous allons dans Gérer les secrets des utilisateurs, qui nous donnera ensuite notre fichier de configuration secret, n'est-ce pas ? Donc, je l'avais déjà mis à niveau avec l'identifiant du client et le secret. Donc non, allez pratiquement voir comment il est utilisé. Nous allons donc prendre cette valeur. Il s'agit donc de l'ID client. Mettez-le ici, il s'agit d'un identifiant client pour Google. Et puis on fait la même chose avec le secret, on le met ici pour le secret. Et encore une fois, vous suivez ce même schéma pour Facebook , Twitter, etc. C'est vrai ? Donc, une fois que nous aurons fait tout cela, ce que nous allons faire, c'est dire configuration, configuration. Et la clé que nous voulons serait l'ID client Google deux-points. Par conséquent, l'ID client deux-points Google. Et ensuite, nous le répéterons pour le secret. C'est donc un deux-points et j'ai fait des séquences de secrets. C'est donc le secret du client deux-points et juste cela, que nous avons ajouté en toute sécurité les clés d'authentification et les secrets sont clés et secrets pour notre application ? Non. Après avoir ajouté cette configuration d'authentification et regardé ce qui se passe lorsque nous accédons à l'écran de connexion. À droite, vous allez voir que vous avez le service Google pour utiliser le rouge. Alors rappelez-vous, quand nous avons fait l'argent, eh bien, les bizarres qui les ont énumérés tous les Facebook , Twitter, etc. Nous avons listé le mode, sachant que la page de connexion de l'échafaudage avait déjà le mécanisme, vous vous souvenez ici d'avoir un peu écrit sur les fournisseurs externes et ainsi de suite. Parce que ce qui se passe dans le fichier ou dans le code derrière, c'est plutôt que c'est le cas, permettez-moi de trouver rapidement la logique de connexion et d'obtenir, il est dit, Obtenez-moi les schémas d'authentification externes gracieuseté de sable dans Manager, san et monitor est en fait, je vais aller à la startup et dire, y a-t-il d'autres schémas définis ici dans la startup que nous avons vu, oh oui, vous avez Google. Bon, nous allons donc ajouter le bouton Google pour vous. C'est vrai ? Donc, dans la page de connexion, s'il n'y en a pas, ils ont le droit ou autrement, listez-les. Et pour chacun d'eux, il suffit de créer un bouton avec le nom du fournisseur. C'est tout ce qui se passe vraiment, non ? Donc parfois, vous savez, une bagarre ces choses et nous les voyons nous-mêmes. Nous n'en avons pas besoin, je vais simplement les supprimer, mais il est toujours bon de comprendre pourquoi vous voyez certaines choses à un certain moment, quelles sont les configurations nécessaires pour que certaines choses fonctionnent ? Et c'est certainement l'une des configurations que l'on voit rarement. En fait, les gens prennent le temps de passer par étape et de vous aider à comprendre. C'est donc comme ça que vous commenceriez à les ajouter. Et je pourrais autant que vous enchaîner ici comme nous l'avons vu avec Twitter, Facebook, etc. Autant que votre chaîne est activée, vous allez obtenir ces boutons automatiquement. Donc, je fais ça étape par étape petit à petit. Lorsque nous reviendrons, nous allons tester ensemble le fonctionnement de cette logique de connexion. 33. Testez le flux de connexion Google Auth: Très bien les gars, donc nous sommes de retour et l'objectif cette fois-ci est de vérifier que notre journal fonctionne réellement. La première étape 1 consiste donc à accéder à la page de connexion. La deuxième étape consiste donc à cliquer sur le bouton bleu. Lorsque nous cliquons sur Google, ce que vous remarquerez, c'est qu'il s'éloigne de notre droite. Nous sommes donc à localhost quelque chose, et quand nous cliquons dessus, il navigue toujours. Assurez-vous donc d'avoir Internet lorsque vous faites cela hors de la route. Et il essaie d'accéder à une barre oblique de deux-points sur google.com et ils nous donnent une erreur. L'erreur ici est donc un 400, ce qui signifie une mauvaise demande. Et c'est la raison pour laquelle l'URI de redirection est incompatible. Ils vous donnent donc un peu de lecture. Et encore une fois, SEO fait quelques lectures juste pour m'assurer que je l'ai bien compris. Et si vous cliquez sur Demander des détails, ils vous indiqueront que si vous êtes le développeur, vérifiez que ces détails de la demande sont conformes aux politiques de Google. Ils vous donnent donc ce que doit être l'URI de redirection, c'est-à-dire localhost, dont ils savent d'où vous venez. Mais vous devez avoir ce point de terminaison sur sa semelle. Je vais copier cela, puis je vais revenir à mon gestionnaire d'informations d'identification et au client que nous avions créé, le même avec l'ID de l'application. Et le secret, ce que vous voulez faire est de passer aux URI de redirection autorisés. Vous allez donc ajouter Ury, puis insérer cette URL ou l'urée, ce lien. Ensuite, vous cliquez sur Enregistrer. Et une fois que cela est enregistré, ce que je vais faire est simplement de cliquer sur OK. Ensuite, nous allons cliquer à nouveau sur Google. Et cette fois, vous allez voir qu'il ne me demande pas de me connecter avec mon icône. Donc, c'est exactement ce que je vais faire. Et après avoir fourni mon adresse e-mail, passe et avoir potentiellement été contesté pour deux fois une vérification par Google, je ne suis pas dirigé vers cette page où il est dit Voulez-vous associer vos cônes Google up ? Ensuite, ils vous donnent l'adresse e-mail et vous demandent de vous inscrire. Maintenant, vous verrez que la page parcourt connexion externe barre oblique d' identité. Et l'URL de retour est exactement quel que soit l'axe, n'est-ce pas ? C'est donc la page que vous pouvez modifier. Sachez si vous souhaitez ajouter ou autoriser l'utilisateur à ajouter plus de détails que son adresse e-mail. Parce que cette adresse e-mail va servir nom d'utilisateur et ils n'auront pas de prénom, de nom de famille, etc. Certes, vous pouvez probablement modifier un peu plus les paramètres avec Google pour obtenir plus d'informations de Google, un bateau, cet utilisateur afin que je puisse remplir mon système. Je ne vais pas aborder toutes ces choses, n'est-ce pas ? Non. Vous pouvez donc faire attention à cela maintenant, une autre chose que vous pourriez obtenir est l'une de ces 400 erreurs après avoir essayé de vous connecter avec des informations d'identification Google, vous pouvez obtenir la même page 400. Si vous le faites, vous pouvez probablement revenir ici et ajouter simplement l'URL sans ce ponçage Google ajoute simplement cela comme un autre URI. Parce que ce qui se passe, c'est que ces URL indiquent à Google ce que mon client doit rechercher lorsqu'il est terminé avec Google. Donc, ce que Google devrait essayer pour revenir au moment où il a fini de faire son truc. Cela fait donc partie de cette sécurité. Rappelez-vous quand nous parlions de la configuration de l'enregistrement et de la connexion sécurisés, la façon dont nous effectuons toujours la redirection, des redirections locales afin de nous assurer que nous redirigeons vers une page notre AP similaire à ce que Google essaie de faire accomplir ici, pour voir quel domaine dois-je toujours rechercher chaque fois que j'ai fini d'authentifier cette personne ? Vous aurez peut-être besoin d'ajouter une autre entrée et c'est dans le sang sur Yuri. Je l'ai fait et n'a épargné aucun mal fait, lisez ou écrivez tout l'argent à notre haut. Une fois que j'ai cliqué sur S'inscrire, je vais devoir confirmer les cônes. C'est très bien. Nous savons que c'est la procédure standard, mais je voulais nous amener à la base de données afin que nous puissions voir ce qui se passe. Ainsi, dans la base de données, vous allez voir un nouvel utilisateur créé avec l'adresse e-mail. Je peux juste régler cela à partir d'ici. Et le tampon de sécurité, tous ces éléments, aucun mot de passe, aucun mot de passe n'est requis car nous ne gérons pas le mot de passe pour cet utilisateur et il s'agit d'un utilisateur de Google. Ainsi, toutes les choses que les résultats de l'utilisateur sont créés, si nous utilisons les identifiants d'utilisateur ASP NET, nous obtiendrons également une nouvelle entrée dans laquelle nous connaissons le fournisseur, la clé du fournisseur, le nom complet et l'utilisateur auquel cette connexion se trouve attribué. 34. Examen de la section OAuth: Très bien, dans cette section, nous avons examiné comment configurer l'authentification Google. Et par extension, les mêmes techniques peuvent être appliquées à d'autres fournisseurs d'authentification tiers. Nous n'utilisons Google que parce que peut-être plus que probablement un compte Gmail ou Google. Et c'est beaucoup plus facile de commencer par ça. Les deux techniques peuvent être appliquées à tous les niveaux. Certaines choses que nous devons faire. Premièrement, nous devons aller sur cette plateforme tierce, quelle qu'elle soit, que ce soit Google ou Windows, Twitter ou Facebook, nous devons y aller, enregistrer un nouveau client Web. Cela nous donnerait la clé et les identifiants d' authentification nécessaires pour autoriser notre application. Nous devons également insérer des URL de redirection d'autorisation basées sur nos adresses de domaine. Et après cela, nous serions encouragés à revenir à notre application et à ajouter des secrets d'utilisateurs et à y stocker notre identifiant client et notre secret au lieu de la configuration normale ou en texte brut dans le code, n'est-ce pas ? Vous voudriez donc ajouter ces secrets à l'AP, y accéder en conséquence. Nous ajoutons le schéma d'authentification ou les schémas en fonction du nombre que vous possédez. Et une fois cela fait, l'application les affichera automatiquement en fonction du code de la plaque chauffante de notre connexion d'échafaudage et enregistrera les Pages. Sachez qu'une fois que nous avons pu nous authentifier en tant que titulaire d'un compte Google, nous pouvons nous connecter et les mêmes privilèges que ceux d'un utilisateur habituel seront appliqués ici. Non, vous allez clairement voir qu'il manque certaines choses parce que nous ne connaissons pas la date de naissance, nous ne connaissons pas le nom complet. Il existe donc certaines informations que nous pouvons permettre à l'utilisateur de gérer par la suite ou nous pouvons transcrire des notes du fournisseur tiers en fonction de la marge de manœuvre et de l'effet de levier qu'il donne. Parce qu'il y a juste certains éléments d'information standard qu'ils vont donner de l'argent. Donc, identificateur de nom, nous obtenons cela. Bien sûr. Eh bien, leur nom, leur adresse e-mail, ceux qui proviennent de l'enregistrement de l'utilisateur. Et ici, nous voyons qu'il y a une méthode d'authentification de Google. Si nous accédons à des connexions externes, Google s'affiche. Donc, les données personnelles et tout. Vous voudriez probablement leur permettre de gérer ces choses dans leur profil en termes d'argent. Ainsi, numéro de téléphone, vous pouvez ajouter le prénom, le nom, la date de naissance. Je charge donc cette tierce personne authentifiée pour créer ses cônes, puis je remplis les détails par la suite. Il y a donc plusieurs façons, comme je l'ai dit, que ce n'est pas une taille unique. Vous devez trouver la tétany qui fonctionne pour vous et vos utilisateurs et votre situation. Cela étant dit, nous avons réussi à configurer l'authentification Google dans notre dotnet Core up. 35. Conclu: Très bien les gars, donc nous sommes arrivés à un autre jalon et nous avons terminé ce cours. Ce cours vous a appris comment implémenter l'authentification et l'autorisation dans votre application Dotnet Core. Non seulement cela vous a appris comment le faire, car la réalité est que nous pouvons réellement sortir toutes ces fonctionnalités au niveau le plus élémentaire. Mais nous avons exploré les tenants et les aboutissants de la façon dont toutes les pièces s'assemblent pour nous offrir une application sûre et agréable. Nous avons également examiné le fait que vous devez être prudent lorsque vous équilibrez les mesures de sécurité convivialité, car vous risquez de rendre votre point d'accès si sûr qu'il est difficilement utilisable. Et d'un autre côté, vous ne voulez pas qu'il soit très utilisable, mais pas très sûr. Vous voulez donc toujours prendre ces choses en considération. C'est toujours une chose à faire. Un tutoriel ou un cours où nous vous apprenons à construire ce système et à saupoudrer un peu de ceci et de cette fonctionnalité. Mais c'est une autre chose lorsque vous vous asseyez et regardez cet ensemble de fonctionnalités et cette bibliothèque dans son intégralité et que appréciez pleinement toutes les subtilités qui peuvent vous guider vos considérations de développement et de conception à l'avenir. Dans ce cours, nous avons à peu près épuisé les bases. Et nous avons examiné les fondamentaux et nous avons examiné certains éléments avancés que nous avons examinés afin que vous puissiez étendre ce qui sort de la boîte. Nous examinerons comment vous pouvez tirer parti de ce qui sort de la boîte et comment toutes ces choses s'adaptent. Je tiens donc à vous remercier d'être restés avec moi tout au long de ce voyage. Et j'espère que vous pourrez suivre ce que vous avez appris de ce cours et créer une belle application sécurisée pour vous-même et vos utilisateurs.