ASP. NET Core – Grundlagen der Authentifizierung und Autorisierung | Trevoir Williams | Skillshare

Playback-Geschwindigkeit


1.0x


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

ASP. NET Core – Grundlagen der Authentifizierung und Autorisierung

teacher avatar Trevoir Williams, Jamaican Software Engineer

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung

      2:03

    • 2.

      Kleinanzeigenprojekt einrichten

      8:53

    • 3.

      Cookie-Authentifizierung zum Webprojekt hinzufügen

      14:33

    • 4.

      Hinzufügen von Anmelde- und Abmeldefunktionalität

      17:17

    • 5.

      Identitätsansprüche und Auftraggeber erkunden

      9:29

    • 6.

      Identitätsansprüche und Auftraggeber erkunden

      13:28

    • 7.

      Abschnittsüberprüfung

      3:05

    • 8.

      Was ist Identity Core

      14:06

    • 9.

      Bestehenden Projekten Identität hinzufügen

      16:55

    • 10.

      Sichere Registrierung implementieren - Teil 1

      9:40

    • 11.

      Sichere Registrierung implementieren - Teil 2

      16:35

    • 12.

      E-Mail-Verifizierung für die Registrierung implementieren

      9:17

    • 13.

      Zusätzliche Überlegungen zu Passwörtern

      9:45

    • 14.

      Grundlagen der Registrierung – Abschnittsübersicht

      5:10

    • 15.

      Login Essentials - Abschnittsübersicht

      0:31

    • 16.

      Login-Funktionalität implementieren

      17:13

    • 17.

      Logout-Flow handhaben

      2:33

    • 18.

      Passwort-Reset-Funktionalität implementieren

      8:20

    • 19.

      Kontosperre implementieren

      7:02

    • 20.

      Zwei-Faktor-Authentifizierung implementieren

      9:45

    • 21.

      Abschnittsüberprüfung

      3:07

    • 22.

      Abschnittsübersicht

      2:00

    • 23.

      Grundlegende Autorisierung implementieren

      9:07

    • 24.

      Benutzern Rollen hinzufügen

      16:55

    • 25.

      Rollenbasierte Autorisierung implementieren

      9:28

    • 26.

      Benutzerdefinierte Ansprüche für Nutzer hinzufügen

      16:20

    • 27.

      Auf Ansprüche in der Anwendung zugreifen

      7:25

    • 28.

      Richtlinienbasierte Autorisierung implementieren

      9:16

    • 29.

      Sektionsüberprüfung – Ansprüche und Rollen

      2:33

    • 30.

      Abschnittsübersicht - Was ist OpenIdConnect

      2:13

    • 31.

      Für Google OAuth-Anmeldeinformationen registrieren

      1:50

    • 32.

      Google Auth zu App hinzufügen

      5:24

    • 33.

      Google Auth Login Flow testen

      4:40

    • 34.

      OAuth-Sektionsüberprüfung

      2:58

    • 35.

      Schlussbemerkung

      1:43

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

129

Teilnehmer:innen

1

Projekte

Über diesen Kurs

Übersicht

In diesem Kurs lernst du die Grundlagen der modernen Authentifizierung mit der ASP.NET Core Identity Library und lernst, die Funktionalität im Verhältnis zu unseren spezifischen Geschäftsanforderungen zu erweitern. Perfekte Sicherheit ist wohl unmöglich zu erreichen, aber wir werden eine Vielzahl von Techniken erkunden, die einen weiten Weg gehen, um Sicherheit und relative Benutzerfreundlichkeit gleichzeitig zu gewährleisten. Wir beschäftigen uns mit der Implementierung von Sicherheit in einer praktischen ASP.NET Core-Anwendung und zeigen, wie wir rollen-, Anspruchs- und benutzerdefinierte richtlinienbasierte Autorisierung implementieren können.

Warum ASP.NET Identity Core

Autorisierung, Authentifizierung und Benutzerverwaltung sind Hauptfunktionen in realen Anwendungen. Identity Core ist die Flaggschiff-Bibliothek, die mit ASP.NET Core-Projekten verpackt ist, um uns zu helfen, die größtmögliche Sicherheit ab dem Start zu erzielen. Wenn du die Authentifizierung und Autorisierung direkt auf deiner Website machst, kannst du deine Nutzer und ihre Daten vor Angriffen schützen. Zusätzliche Funktionen wie Zwei- und Multi-Faktor-Authentifizierung sind relativ einfach zu installieren, und diese Bibliothek kann leicht erweitert werden, um einzigartige Geschäftsregeln zu implementieren, die den Umgang mit Benutzern einschränken.

Eine starke Grundlage für ASP.NET Core Security aufbauen:

  • Erfahren Sie, wie du einer ASP.NET Core-Anwendung die Cookie-Authentifizierung manuell hinzufügen kannst

  • Wie man Nutzerrollen, Ansprüche und Richtlinien richtig umsetzt

  • Lerne, wie du Nutzeransprüche nutzen, aufbauen und verwalten kannst

  • Lerne, wie du einen Benutzerauthentifizierungs- und Registrierungsprozess richtig umsetzt

  • Kennwortrichtlinien und die Wiederherstellung lernen

  • E-Mail-Funktionen für sichere Kontobestätigung, Passwort vergessen und andere Prozesse einrichten

  • Lerne, wie du Autorisierungs- und Benutzereinschränkungen hinzufügen kannst

  • Zwei- und Multi-Faktor-Authentifizierung hinzufügen

  • Moderne Authentifizierungsmethoden lernen (Social Logins, OAuth usw.)

Auch wenn die Grundlagen der Sicherheitsprinzipien mit einer Razor Pages-Anwendung demonstriert werden, können alle Techniken und Überlegungen in jedem ASP.NET Core-Anwendungstyp berücksichtigt werden, einschließlich MVC und Blazor. 

Es bietet Inhalte für Entwickler auf allen Ebenen, da es nie zu spät bzw. zu früh ist, um über die besten Sicherheitspraktiken für deine Webanwendung nachzudenken.

Inhalte und Übersicht

Für diesen Kurs brauchst du einige Kenntnisse in . NET Core-Entwicklung und C#.

Dieser Kurs bietet etwas mehr als 5 Stunden Premium-Inhalte, die intelligent aufgeteilt sind, um eine Reihe von Aktivitäten auf der Grundlage der einzelnen Module der Anwendung, die entwickelt wird, hervorzuheben. Außerdem beschäftigen wir uns mit der Fehlerbehebung und Fehlerbehebung; Implementieren von Best Practices; Schreiben effizienter Logik und Verstehen, warum Entwickler die Dinge so machen, wie sie es tun. Dein Wissen wird im Verlauf des Kurses Schritt für Schritt wachsen und du wirst herausgefordert, das Beste zu sein, das du sein kannst.

Wir machen die Dinge nicht immer beim ersten Mal perfekt; Das ist nicht die Realität, wenn man Code schreibt. Wir machen Fehler und weisen darauf hin und beheben sie danach. Auf diese Weise entwickeln wir die Kenntnisse im Umgang mit Debugging-Tools und -Techniken. Wenn du den Kurs abgeschlossen hast, wirst du dich in Visual Studio bewegt haben und Logik- und Syntaxfehler so sehr untersucht haben, dass es für dich bei der Arbeit in der Natur sein wird. NET-Umgebung. Deine neu erlernten Fähigkeiten werden praktisch eingesetzt und deinen Chef und deine Kollegen beeindrucken.

Der Kurs ist komplett mit auf GitHub gehosteten Arbeitsdateien, mit der Einbeziehung einiger Dateien, um dir die Replizierung des demonstrierten Codes zu erleichtern. Du kannst bei der Arbeit an der Seite des Autors arbeiten, und du erhältst nach Abschluss des Kurses ein nachweisbares Abschlusszertifikat.

Triff deine:n Kursleiter:in

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Kursleiter:in
Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Einführung: Hallo da und willkommen zu meinem neuen Kurs ist für dich dotnet Core Identität, Authentifizierung und Autorisierung Essentials. Ich bin dein Instruktor für Var Williams. Ich bin seit über 10 Jahren Software-Ingenieur und Vortrag. Und mit diesem Kurs hoffe ich, Ihnen alle Grundlagen und Grundlagen zur Sicherung Ihrer ESP-Dotnet-Kernanwendung mithilfe der Flaggschiff-Bibliothek Identity Core beizubringen . In Bezug auf die Dinge, die Sie lernen, lernen Sie, wie Sie eine starke Grundlage in ASP.Net Core Security aufbauen können. Sie lernen, wie Sie die Cookie-Authentifizierung implementieren, die Manuel ist, und halten Sie fest, um Anspruchsregistrierungen in Ihrer Anwendung zu verwalten . wie Sie sichere Login- und Weiterverteilungsarbeiten für Ihre Benutzer einrichten und gleichzeitig die Benutzerfreundlichkeit gewährleisten. Und wir werden verschiedene Funktionen von Drittanbietern wie E-Mail einrichten und uns ansehen, wie die Zwei-Faktor-Authentifizierung implementiert werden kann. Wir haben uns in diesem Kurs angeschaut, wie wir uns mit Social Logins wie Google und Facebook auf Twitter integrieren können. Und all die Dinge, die wir in diesem Kurs nicht tun werden zerstörtes Lernen, ist die b.net-Entwicklung. Und wir werden uns nicht verlieren, wenn wir uns verschiedene Funktionen ansehen und versuchen, ein großes Projekt aufzubauen. Stattdessen konzentrieren wir uns auf ein kleines Projekt und ich sende gezielt, was wir nutzen werden , um die Ins und Outs der Identitätsbibliothek zu untersuchen. Wir haben gelernt, jede Dotnet Core-Anwendung zu sichern, egal wie groß oder klein sie ist aufgrund der Grundlagen der Authentifizierung und Autorisierung, die wir untersuchen werden. Sie benötigen auch etwas Erfahrung in der Programmierung in Dotnet Core mit C-Sharp sowie ein Verständnis dafür, wie Entity Framework funktioniert. Wieder einmal werden wir all diese Dinge nicht erforschen. Ich habe andere Kurse für diese spezifischen Dinge. In diesem Kurs schauen wir uns also die Dotnet Core-Identität an. bei allem, was gesagt und getan wird, Lassen Sie uns bei allem, was gesagt und getan wird, schauen wir uns an, wie wir die bestmögliche Sicherheit für unsere Dotnet Core-Anwendung implementieren können . Wir sehen uns bald. 2. Einrichten von Setup -projekt: Hey Leute, willkommen zurück. In dieser Lektion nehmen wir uns einige Zeit, um die Projekte zu verstehen, mit denen wir beginnen. Sie werden nicht von Grund auf neu beginnen, weil dieser Kurs voraussetzt, dass Sie bereits einige grundlegende Kenntnisse in ist Geschwindigkeit auf einem Kern und Entity Framework Core. Und wenn Sie dies nicht tun, empfehle ich Ihnen, einen meiner vorherigen Kurse wie abgeschlossen ist Geschwindigkeit auf einem Kern und Entity Framework Development zu überprüfen . Oder meine Kurse über Entity Framework, wenn Sie dort Ihre Fähigkeiten schärfen müssen. Aber für diesen Kurs konzentrieren wir uns auf Sicherheit. Diese Grundthemen sind also bereits angenommen und das Projekt wurde bereits erstellt. So können Sie zu diesem Projekt gelangen, indem Sie dem Link folgen, der bereits für Sie freigegeben ist. Oder Sie können einfach zu meinem GitHub-Profil gehen und nach einem Klassifikator suchen. Und es ist das Identitätssicherheit gewesen und es sollte als eines der Projekte erscheinen , wenn Sie diesen Weg nehmen möchten. Jetzt müssen Sie alles, was Sie wirklich tun müssen, um dieses Projekt auf Ihrem Computer zu bekommen, wenn Sie nicht unbedingt mit dem Prozess vertraut sind, wenn Sie nicht unbedingt mit dem Prozess vertraut sind, nur Code zu drücken und dann können Sie mit Visual Studio öffnen. An diesem Punkt. Visual Studio ermöglicht es Ihnen, dieses Tool einen beliebigen Ordner auf Ihrem Computer zu klonen. Und dann werden Sie in der Lage sein, diese Lösung zu öffnen. Also werde ich das einfach schnell demonstrieren. Wenn ich diese Option wähle, die mit Visual Studio geöffnet wird, heißt es, wohin möchte ich sie klonen? Und dann kann ich einfach den Pfad auswählen. Ich werde es als Standard rational belassen. Stattdessen werde ich nur etwas anziehen, damit es nicht mit meinem vorhandenen Code kollidiert. Und dann klicke auf „Klon“. Und sobald das erledigt ist, können Sie auf diese Lösungsdatei doppelklicken und die Lösung auf Ihrem Computer öffnen. Nun, wenn diese Lösung im Projektmappen-Explorer geöffnet wird und Sie minus nach links markieren, befindet sich Ihre Lösung möglicherweise auf der rechten Seite. Bei Ihrem Visual Studio-Setup spielt es jedoch keine Rolle, dass Sie etwas sehen sollten. Wir können das zulassen. Sie werden also sehen, dass wir zwei Projekte haben. Wir haben ein Datenprojekt, und wir haben ein Webprojekt. Nein, das Datenprojekt überträgt grundlegende Dinge wie die Konfiguration für die Entitäten, die bislang für die Datenbank und die tatsächlichen Datenbankkontexte. Noch einmal, wenn Ihnen etwas, was ich gerade gesagt habe, nicht vertraut ist, sollten Ihnen mindestens 80 Prozent von dem, was ich gerade gesagt habe, vertraut sein. Wenn dies nicht der Fall ist, empfehle ich Ihnen, einen der vorherigen Kurse zu überprüfen, die ich über ASP.Net-Kernentwicklungen habe. Ordnung, also für diesen Teil des Projekts ist alles schon mit allen Referenzen verdrahtet und so weiter. Wenn Sie diesen Kurs durchführen, Sie möglicherweise aufgefordert, einige NuGet-Pakete zu aktualisieren. Das ist in Ordnung. Im Moment ist alles mit dotnet five gebaut, daher ist es abwärtskompatibel und generell vorwärts kompatibel. Aber alles, was wir hier tun, wird auch mit der nächsten Version von dotnet kompatibel sein. Sie müssen sich also nicht zu sehr darum kümmern , der gesamte Anwendungsbereich der neuesten Technologie zu sein. In unserem Datenbankkontext verweisen wir auf zwei Tabellen und es ist eine sehr einfache Anwendung. Wie ich schon sagte, wir sind wirklich nur wollen eine Anwendung, in der wir Sicherheitsbedenken anwenden und sie einrichten und schauen wie Identität im Allgemeinen funktioniert und uns hilft, zu sichern oder Website. Also hier haben wir zwei Tabellen, eine für die Kategorien auf 14, die Anzeigen, richtig? Ich wende die Konfigurationen an, die im Konfigurationsordner angerufen werden, beziehungsweise für Werbung und vier Kategorien. Also im Grunde sind diese nur einige Daten in die Datenbank einzuspeichern. Alles klar, das ist alles, was da wirklich passiert. Und dann ist die Migration bereits erstellt. So bereits erstellt, dass die anfängliche Migration, wo es die Kategorie-Tabelle erstellt und die Ankündigung bleiben mit Sätzen dieser Fremdschlüsselbeziehung zwischen den beiden. Und dann geht es weiter und fügt die vordefinierten Daten ein. Das ist also unser Datenprojekt. Wirklich wissen, dass das Web-Projekt ziemlich genau dort ist , wo die Benutzeroberfläche sitzen wird, wie wir bereits wissen. In dieser Situation verwende ich Razor Seiten. Also mit dotnet core, haben Sie die Möglichkeit, Razor Seiten von MVC. Und Sie haben auch die Möglichkeit, Blazer zu verwenden. Erkennen Sie die Grundlagen dessen, was wir besprechen werden um einem Projekt Identität hinzuzufügen und Ihr Projekt zu sichern. All diese Sicherheitsgrundlagen können mit jeder dieser Projektvorlagen auf der ganzen Linie verwendet werden . Also, während wir Razor-Seiten verwenden, wenn Sie eine MVC-App oder einen Blazer im IRR mit haben, kann er immer noch die meisten, wenn nicht alle, dieser Sicherheitsbedenken entsprechend spielen . Alles klar, in der Webanwendung sind einfache Setup-Dinge hier. Wir haben die Verbindungszeichenfolge, die eine Datenbank generieren wird, oder es zeigt auf eine Datenbank, die auf dem lokalen DB-Server sein sollte , der mit Resolve Studio kommt. Wir haben die Datenbank, die Kleinanzeigen dB genannt wird, und wir haben ihr etwas wenig Sicherheit gegeben. Sie können dort Änderungen vornehmen, wenn Sie möchten. Also, wenn Sie es nicht bereits auf diesem bestimmten Server wollen, wollen Sie nicht, dass es so kein Problem genannt wird. Gehen Sie voran und passen Sie das an. Ich habe bereits Gerüst die Anzeigen auf und Kategorien Seiten. In Ordnung, also haben wir die aktuellen Seiten hier. Und noch einmal, dies ist eine Sicherheit, die der Schwerpunkt dieses Kurses ist Sicherheit. Also werde ich nicht losgehen und anfangen zu abstrahieren und Repositories haben und so weiter. Wir haben alle Kurse, die in all dem eingehend gehen, oder? Also halte ich es sehr am einfachsten für die Dinge, die im Kontext dieses Kurses nicht wirklich wichtig sind. Sie werden also sehen, dass ich den Kontext tatsächlich direkt injiziere. Ich habe hier alles von Grund auf von Grund auf durchgekratzt. Ich benutze keine Hindernisse oder irgendeine erweiterte Abhängigkeitsinjektion oder so etwas. Ich will nur etwas, das funktioniert. In Ordnung. Also einfach gesagt, ich bin alle aus dem Box-Code hier, abgesehen von ein paar Modifikationen. Wie bei den Anzeigen hätte der Standardcode ID gehabt, eine ID hier für die Dropdown-Liste, ich habe ID und Name, so dass ein Name auf einem Drogenkolumnisten angezeigt wird, richtig? Ähnlich in den Details hätten wir hier Kategorie Punkt-ID gehabt. Ich habe das geändert, um es für Anzeigezwecke zu benötigen. Und ähnlich wie bei der Erstellung für die Bearbeitung. Wieder einmal haben wir ID und Namen für die Dropdown-Liste. Abgesehen davon habe ich bereits die Layoutseite eingerichtet, um die zusätzlichen Navigationslinks zu der Anzeige und den Kategorieseiten zu haben . Also noch einmal, all das ist für Sie getan. Wir haben also eine gute Startplattform, weil ich bereits davon ausgehe, dass Sie wissen, wie Sie eine ASP.Net Core-Anwendung erstellen, oder wir konzentrieren uns auf Sicherheit. Um dies vollständig zu installieren oder sich für die Mittelmäßigkeit des Quellcodes zu begnügen. Der nächste Schritt hier wäre nur, dass es diese Datenbank erstellen zu lassen. Also, unabhängig davon, ob Sie die Verbindungszeichenfolge ändern oder nicht, müssen Sie zur Package Manager-Konsole gehen Wenn es nicht auf diesem Abschnitt auf Ihrem Bildschirm ist, können Sie immer zu Tools NuGet-Paket-Manager gehen und diesen Monitor -Konsole. Und dann müssen Sie nur die Datenbank aktualisieren. Sobald Sie dies tun, wird diese Datenbank für Sie mit den Standarddaten generiert. Und dann können Sie immer einfach, Sie wissen, ob Sie klicken, drücken Sie F5, klicken Sie auf Ausführen oder verwenden Sie Control F5, um in den nicht abgestuften Modus zu gehen, erhalten Sie das Web, die Web-App, sorry, starten. In Ordnung, also noch einmal, ich habe nichts zu Besonderes mit dem Projekt gemacht, außer die neuen Seiten zu zerreißen. Wenn Sie also auf Werbung klicken, sehen Sie die standardmäßigen vordefinierten Daten in ihren Kategorien. Du wirst das Gleiche sehen, oder? Ich habe der Detailseite ein wenig Formatierung für den Preis hinzugefügt, aber er erinnerte sich nicht daran, das hier für die Indexseite zu tun. Also ich meine, wenn du willst, kannst du es so anpassen, wie du willst. Aber für Knoten, das ist, was ich so wenige J und könnte nur sein, dass Sie, Sie ändern die Formatierung hier, und Sie ändern auch die Kategorie, zeigen Sie es nicht der ID-Name wie das, was wir in den Details haben, oder? Welches zu diesem Zeitpunkt für Sie sollte leicht repariert werden, oder? Wenn wir zurückkommen, werden wir uns den ersten Satz von Konfigurationen ansehen, die wir hinzufügen müssen, um Identität hinzugefügt oder Authentifizierung zu unserem Projekt hinzugefügt zu bekommen . Wir werden also die Cookie-Authentifizierung einrichten, wenn wir zurückkommen. 3. Cookie: Alles klar, willkommen zurück Jungs. Also in dieser Lektion werden wir Cookie-Authentifizierung zu unserer Anwendung hinzufügen. Das letzte Mal, ein Candida Fehltritt. Und ich sagte, wir fügen Identität hinzu. Und dann habe ich mich korrigiert, um Cookies zu sagen. Identität ist also die Bibliothek, die Microsoft verwendet, um die Authentifizierungsautorisierung für all diese Sicherheitsdinge zu behandeln. Aber sie erlauben uns, unsere eigenen Dinge zu tun. Bevor ich also in die von Microsoft bereitgestellten Bibliotheken gehe, möchte ich, dass Sie wissen, was die Optionen sind, weil Sie nur notwendig sein könnten Trichter, wo Sie sich nicht auf die Microsoft-Bibliothek verlassen möchten. Vielleicht möchten Sie Ihre eigene Sache machen und die Cookie-Authentifizierung ist verfügbar, oder Sie haben tatsächlich die Möglichkeit, Ihre eigene Art der Authentifizierung mit ihrer eigenen Art von Authentifizierung auf Schema unabhängig von Identität, einer Bibliothek oder Nein hinzuzufügen mit ihrer eigenen Art von Authentifizierung auf Schema unabhängig von Identität, , falls Sie nicht so klar sind, was ein Cookie ist, ich bin sicher, dass Sie etwas über einen Cookie und all Ihre Durchquerung des Internets gesehen haben , die Sie meist in alten sehen, wollen Sie alle Cookies und alle Arten von Cookies akzeptieren Richtlinien und so weiter über das Internet. Ein Cookie ist also im Wesentlichen eine Datendatei, die zwischen Ihrem Computer und einem Server überschritten wird. Und es identifiziert Sie eindeutig als Benutzer und Ihren Computer als Client. Und wenn Sie versuchen, etwas auf unserer Website zu tun, werden diese Cookie-Informationen über Sie und Ihren Computer mit dem Server geteilt. Und dann kann der Server eine Entscheidung treffen , ob zu essen sollte Ihnen etwas zeigen. Ja, es gibt Sicherheitsbedenken bei der Verwendung der Cookie-Authentifizierung im Allgemeinen. Aber dann, ich meine, können Sie so viel wie möglich tun, um Ihre Anwendung zu sichern. Und alle. Der Punkt ist, dass Sie immer ein Gleichgewicht zwischen Benutzerfreundlichkeit und Sicherheit finden müssen. Denn je mehr Sicherheit Sie einsetzen, desto weniger Benutzerfreundlichkeit ist für einige Benutzer. Und manchmal ist ein mehr Benutzer, der Benutzer für eine Elite ist, ein weniger sicherer. Es ist also ein gesundes Gleichgewicht, das man definitiv genug davon messen muss. Lassen Sie uns darauf eingehen, wie wir Authentifizierung und durch Erweiterung, Cookie-Authentifizierung zu unserer Web-Anwendung hinzufügen würden , wie sie steht. Also innerhalb unserer startup.js CSS-Datei werde ich diese Option hinzufügen. Direkt unter dem Dienstleistungspunkt, fügen Sie Razor Seiten hinzu. Ich wollte sehen, dass Dienste dachte AD-Authentifizierung. Also kann ich einfach sagen, Authentifizierung hinzufügen. Und das würde bedeuten, dass ich möchte, dass sich Benutzer identifizieren müssen. Es gibt also wenig Blick auf die Authentifizierung im Vergleich zur Autorisierung. Authentifizierung bedeutet, sich zu identifizieren, so dass ich weiß, wer Sie gerade sind , haben wir sehen, ein bestimmtes Allel würde Cookie-Authentifizierung wollen. Also innerhalb dieser Methode gibt es ein paar Überladungen. Eine Overlord R1-Version hat also NT-Parameter. Ein anderes erlaubt es mir, das Standardschema einzufügen. Und es gibt wenig auf, erlaubt mir, Optionen zu setzen. Also werde ich diejenige verwenden, wo ich einfach das Standardschema einfügen kann. Das Standardschema für Cookies wäre also im Grunde die String-Cookies, in Ordnung, mit Tools. Aber dann, weißt du, manchmal willst du es nicht in Aquarell magische Zeichenfolge eingeben, also geben sie uns tatsächlich Konstante oder eine statische Konstante, ich gehe so etwas wie Cookie aus und sie sah auf die Schuld. Und wenn ich nur Punkte kontrolliere, sehen Sie mit der using-Anweisung dafür. So Cookie-Authentifizierung Standard dot und dann ich endlos Authentifizierungsschema. Und das wird diese String-Cookies zurückbringen. In Ordnung? So kann ich das jederzeit zum Kompilieren sicher verwenden und diese magische Zeichenfolge loswerden. Darüber hinaus möchte ich hinzufügen, buchstäblich Cookies hinzufügen. Wenn Sie sich also ansehen, was diese Methode tut, fügt sie Cookie-Authentifizierung zu einem ASP.Net Core Authentication Builder mit dem angegebenen Themeschema hinzu, sorry, richtig, also verwendet die Cookie-Authentifizierung das Problem, um unterstützt im Client, um die Authentifizierung durchzuführen. Das sind also eine Menge Informationen, genau da. Das ist ein ganzes Tutorial genau dort im IntelliSense-Snippet. Also kann ich einfach Cookie hinzufügen. Und zwischen diesen beiden Zeilen wissen wir, wissen, dass unsere Anwendung in der Lage ist, Cookie-Authentifizierung. Nun müssen wir die Middleware wissen lassen, dass sie die Bibliotheken und die Fähigkeiten vorab laden muss , um unsere Authentifizierung und Sachen zu erledigen. Also, wenn wir ein wenig nach unten scrollen zur Konfiguration , wo alle Middlewares wirklich hinzugefügt werden. Sie werden sehen, dass wir bereits Berechtigungen haben. Autorisierung, Verwendung Autorisierung kommt Standard mit grundsätzlich jeder dotnet Core-Anwendungsvorlage. Aber was wir tun wollen, ist die Authentifizierung direkt darüber hinzuzufügen, oder? Also kannst du es einfach sagen. Dot Authentifizierung hinzufügen oder sorry, verwenden Sie Authentifizierung und meinen Hintern. Verwenden Sie die Authentifizierung direkt über der US-Autorisierung. Und ich werde zwischen diesen beiden Zeilen, unsere Anwendung, wir werden sehen, nun, wenn etwas geschützt ist, dann muss ich unseren Cookie sehen. Wenn ich kein Cookie sehe, verwenden Sie alle Logins. Also, das ist, was Authentifizierung auf SES, identifizieren Sie, wer Sie sind. Autorisierung sagt: Können Sie das tun oder nicht? Nachdem Sie also identifiziert haben, wer Sie verwenden, den Betrüger oder was auch immer es ist, haben Sie identifiziert, wer Sie sind, richtig? Kannst du diese Aktion tatsächlich ausführen oder nicht? Also, das ist, was Autorisierung sieht. Also, um die Autorisierung aufzurufen und was ich tun werde, um dies zu beschleunigen, ist in unserem Index für Werbung, richtig? Oder keine oder beschränkt auf die Kategorien. Das macht es ein wenig Sinn, dass Sie die Liste der Kategorien und die Fähigkeit, die Liste der Kategorien zu erweitern, vorhersagen möchten , dann wäre es, Werbung vorherzusagen. Natürlich haben unterschiedliche Geschäftsregeln unterschiedliche Anforderungen. Also sage ich nicht, dass es so ist, wie es auf Ihren Kontexten basieren sollte, Sie treffen Ihre Entscheidung, richtig? Aber wenn wir den Zugriff auf die Kategorieliste einschränken wollten, Ordnung, also wenn Sie diese Anwendung jetzt ausführen, können Sie die Anwendung anhalten. Sie werden sehen, dass es keine Beschränkung zwischen der Kategorie Sprache und Werbesprache gibt. Das ist in Ordnung. Wir müssen jedoch nur eckige Klammern direkt über der Klasse öffnen. In Ordnung, also habe ich Namespace und wir haben eine öffentliche Klasse. Und dann können wir sagen, Autor ich schreibe, und wir enthalten oder fehlen Anweisungen. Alles klar, und dann allein diese Zeile, im Grunde, wir beschränken den Zugriff auf alles andere auf dieser Seite. Wenn es sich um eine MVC-Anwendung handelt, wäre es wahrscheinlich über den Controller oder es wäre über die Aktionen. Sie können dies also tatsächlich autorisiert in den Kontext einer MVC-Anwendung über den Controller stellen , um den Zugriff auf jede Aktion in diesem Controller zu beschränken, oder über die spezifischen Optionen, um den Zugriff auf diese bestimmte Aktion zu beschränken. Im Falle von Arrays von pH-ähnlichen, was wir haben, könnten Sie es über die gesamte Klasse legen, die den pH-Wert darstellt. Und das wiederum wird auf alle Handler, die im pH-Wert liegen könnten, absinken. Natürlich, im Gegensatz zu MVC, wo Sie eine Datei mit mehreren Auktionsaktien in mehrere Ansichten in Razor Seiten haben , haben Sie mehrere Seiten, jede eine Art von autonomen. Also, wenn Sie den Zugriff auf die Funktionalität auf einer bestimmten Seite einschränken wollten, dann legen Sie einfach diese autorisierte Flut über diese bestimmte Seite. In Ordnung. Also mit all dem gesagt, lassen Sie uns einen Blick darauf werfen, was das Hinzufügen dieser wenigen Codezeilen zu unserer Anwendung bringen würde. In Ordnung, also ist unsere Bewerbung offen. Wenn ich zu Anzeigen gehe, werde ich dort ohne Probleme navigieren. Und wenn ich Kategorien wähle, dann siehst du, dass es mir das gibt, während es mir 40 Unterarm gibt, kann nicht Telefon sein, richtig. Grund dafür ist, dass es versucht, standardmäßig eine Anmeldeseite zu finden. Sehen Sie, dass ich das nicht wusste. Ich habe nicht viel getan. Richtig. Es ist automatisch sehen gut, Ich sehe auf autorisierte Flagge hier für diesen Strand, sah, dass bedeutet, dass ich die Person bitten muss, sich vorher zu identifizieren. Okay, wenn Sie also eine formale Sicherheit mit b.net Core gemacht haben, wissen Sie, dass es dieses Symbol ist. Fügen Sie das autorisierte und das Login-Zeug hinzu. Sie haben das Risiko von gefalteten ED-Entitätsseiten bereits erhöht. Aber wie ich schon sagte, wir bauen Kisten. Ich will, dass wir Gesellschaft haben. Sie schätzen alle Teile und Teile und wie sie in das Gesamtbild passen. Noch eine Sache, bevor wir diese Sitzung beenden. Manchmal möchten Sie diese Art von Autorisierung auf jeder einzelnen Seite. Also, ob Sie in MVC App oder ist eine Seite nach oben, manchmal ist es, dass Sie nur wollen, immer ist, dass eine Person geht weiter. Unser IDE-Benutzer würde weitermachen. Sie müssen sich identifizieren, die ein angemeldeter Benutzer sein müssen, um auf alles zugreifen zu können. Also in dieser Situation, wenn Sie Razor Seiten verwenden, können Sie zum Start gehen, gehen Sie zu der Zeile, die sagt hinzufügen Razor Seiten. Und dann könnten Sie sagen, MVC-Optionen sind ungleich, oder? Und dann haben Sie nur einen Lambda-Ausdruck, wo Sie Q-Dot-Filter sehen können , dot add. Also Filter, falls Sie sich fragen, Filter präsentiert dies, das ist ein Filter. Alles, was in eckigen Klammern steht, das über einen Controller oder eine Auktion oder in diesem Fall eine Seite geht . Und manchmal sogar Komponentencode. Das nennt man Filter, richtig? Also hier sehe ich einen Filter hinzufügen. Und dieser Filter wäre eine neue Autorisierung. Der einzige Autor als Filter. In Ordnung, und dann Punkte steuern, um die fehlende Referenz einzuschließen. So würden Sie alles in meinem sehen und ich vermisse das Öffnen und Schließen dort. Ordnung, also ist dies meine Art, jede einzelne Seite zu sehen , auf der besagt, dass es eine Seite in dieser Anwendung gibt. Die meisten haben diesen Autor standardmäßig als Filter. Also das bedeutet, ich könnte sogar einfach entfernen, die Autorisierung. Ich brauche es dort nicht explizit, weil nein, ich habe meine gesamte Anwendung gesperrt. Wenn Sie MVC verwenden, könnte dies auf ähnliche Weise durchgeführt werden. Anstelle von Arterien von Seiten, würden Sie wahrscheinlich Controller sind lassen Sie mich sehen. Controller. Sie hätten also Controller würden Ansichten, Controller mit Ansichten. Und dann müssten Sie nicht sagen, fügen Sie MVC-Optionen hinzu. Sie würden tatsächlich nur sehen, dass dieser Lambda-Ausdruck direkt in, oder? Und da gehst du. So würden Sie diese hinzufügen, dieser Filter standardmäßig allen Controllern. Kontrolleure mit dir, richtig? So würden Sie Ihre gesamte Anwendung besitzen. Jetzt, da ich die gesamte Anwendung sperre, könnte es Seiten geben, auf die ich zugreifen möchte, ohne Köpfe erstellen zu müssen, richtig? Also lassen Sie uns sehen, zum Beispiel, die Liste der Werbung sollte kostenlos für die Anzeige sein. Vielleicht sollte die Detailseite kostenlos für die Anzeige sein. Sowohl das Bearbeiten als auch das Erstellen ist auf beschränkt, und das Löschen würde eingeschränkt sein, um das Recht dieser Person zu authentifizieren. In diesem Fall könnte ich einfach einfach zum Index gehen und dann einen anderen Filter verwenden, der sagt, anonym zulassen und nicht Nemos Verschütten, richtig? Gehen Sie weiter und fügen Sie die fehlenden oder Referenzen ein. Geh. Erlauben Sie also anonym auf dieser Seite und erlauben Sie anonym auf der Detailseite, richtig, Nur um des Arguments willen. Also, wenn ich wieder ohne Debug laufen gehe, dann werden Sie sehen, dass ich zur Anmeldeseite gehe. Warum? Weil ich nicht am Ende bin und ich nicht anonym auf der tatsächlichen Indexseite der Website erlaubt. In Ordnung. Sie gehen also standardmäßig zu Datenschutz und Index. Also überall, wo Sie wollen, ohne sich authentifizieren zu müssen, müssen Sie es sagen, anonym zu erlauben. Also nur für Demo-Zwecke, lassen Sie uns anonym. Und ich werde nur neu erstellen und es erneut versuchen und sehen, dass nirgends in die Indexseite gelangt, richtig? Wenn ich in die Privatsphäre gehe, lade ich anonym. Wenn ich zu Kategorien gehe, habe ich keine anonymen erlaubt. Ich habe nach dem Login. Wenn ich versucht habe, auf Werbung zu gehen, dann gehen wir. Hey, es funktioniert direkt über erstellen, bearbeiten, löschen, alle diese erfordern Logins, richtig? Details funktionieren jedoch, weil ich anonym lade. Das ist also eine grundlegende Art, sich aus der Box zu lösen. Sie sind tiefer. Sie sind Microsoft, das gesamte dotnet Framework und die dotnet Core Development Suite ermöglicht es uns, einfach zu wählen, auszuwählen und zu wählen. Meinung nach ist es ganz einfach, welche Seite gesichert werden sollte, auf welcher Seite nicht sicher sein sollte. Und natürlich wird es mit mehr Geschäftsregeln viel komplizierter. Aber ich bin sicher, dass Sie beginnen zu sehen, ob Sie nicht wirklich vertraut sind mit dem, was wir bisher getan haben, Wie einfach zu tun ist wirklich beginnen, Einschränkungen für die Sicherheit unserer Anwendung hinzuzufügen. Jetzt, wenn wir zurückkommen, werden wir einen sehr einfachen Logout-Workflow verkabeln. Zeigen Sie einfach, wie es aussieht, wenn wir auf die Seite Login zu bekommen, wir bieten, was wir zur Verfügung stellen müssen und wie es aussieht, wenn wir eingeloggt sind. 4. Füge die: Na gut, Leute, willkommen zurück. Das letzte Mal waren wir sicher, dass wir unsere Cookie-Authentifizierung eingerichtet haben und wir haben uns all die Dinge angesehen, die wir einrichten müssen um sicherzustellen, dass unsere Anwendung einen Benutzer auffordert, ihn zu identifizieren, bevor wir sie zulassen Zugriff. Und wir haben gesehen, wie einfach das ist. Oh, nein. Die Zeile, die ich hervorgehoben habe, ist leicht modifiziert von dem, was wir das letzte Mal hatten, und ich werde erklären. Also, wenn wir das Cookie aus hinzugefügt und wir die globale Authentifizierung auf unserer Autorisierung Filter Other hinzugefügt, haben wir bemerkt, dass es immer auf eine Seite, die die Website Slash Schrägstrich Login mit Abfragezeichenfolge sagte , was als Rückgabe-URL bezeichnet wird, oder? Also was, wenn du nicht wolltest, dass es auf diesen Weg geht, richtig? Dies ist also völlig optional, aber standardmäßig wird unser Doppelpunkt Schrägstrich Login sucht nach einer Anmeldeseite an diesem Pfad. Wenn Sie MVC verwenden, würden Sie einen Doppelpunkt-Controller erstellen und eine Option haben, die Login genannt wird. Es würde also nicht alles zu diesem Controller gehen, der Kegel genannt wird. Und es wird eine Anmeldeaktion zurückgegeben. Die Ansicht in Razor Seiten wäre so einfach wie das Erstellen eines neuen Ordners, Aufrufen eines TOC-Kegel und die Erstellung unseres pH-Wertes in dort namens Login. Richtig? Was ist, wenn Sie die Standardwerte nicht wollten? Also, das habe ich hier getan. Wenn Sie den Standard für den Anmeldepass nicht möchten, können Sie tatsächlich Cookie hinzufügen und dann einfach einen Lambda-Ausdruck setzen und den Anmeldepfad so einstellen, dass er wie gewünscht ist. In unserem Beispiel werde ich diese benutzerdefinierte Palette verwenden. In Ordnung, Wieder einmal, mit all dem benutzerdefinierten Pfad, wird es nach einem Kegel Schrägstrich Login suchen. Es liegt also ganz bei Ihnen, wenn Sie den benutzerdefinierten Pfad nur für Übungszwecke verwenden möchten oder Sie sich an den Standard halten möchten. Es spielt keine Rolle, solange Sie das Konzept zu schätzen wissen. Mit dem benutzerdefinierten Pfad werde ich einen neuen Ordner erstellen, der abgerufen wurde. Es könnte leicht Authentifizierung sein oder was auch immer Sie wollen es sofort nennen. Und in allem werde ich eine neue Razor Seite erstellen. Ich werde nur eine leere Ergebnisseite verwenden. Und ich ging los, um es Login zu nennen, weil es im Auth-Ordner nach unserem pH-Wert namens Login sucht . Sobald ich das mache, bekomme ich mein HTML oder CSS, einen Teil unseres anderen und meinen Code dahinter. Und wir werden das ziemlich schnell zusammenstellen, da ich schon irgendwie das Formular hier habe. Also werde ich es einfach dort einfügen und dann werde ich Sie durch das führen, was getan wird, richtig? Also habe ich Roll, richtig, also habe ich ein erstes div, sagen, kann dieses div öffnen und schließen. Und dann öffnen und schließen Sie ein anderes div. Und dann meine ich, der Abschnitt ist optional. Es ist Ihre Benutzeroberfläche, Sie können in, was Sie wollen. Aber das ist eine Art von der Standard-Login-Seite von Identitäten modelliert. Wenn Sie also bereits ein Projekt oder eine Identitätsseite haben, ist das in Ordnung. Du kannst immer gehen und es holen. Wenn Sie diese Lektion ausführen, wäre diese Seite ohnehin bereits im Projekt enthalten. Also können wir tatsächlich gehen und einfach den Code holen und einfügen, wenn Sie Punkt nicht von Grund auf neu eingeben möchten. Aber ziemlich kurz gesagt, ich habe nur ein Formular hier, das eine Eingabepunkt-E-Mail, Eingabe Punkt-Passwort und dann eine Checkbox für mich nimmt . Okay, das ist alles, was wirklich hat. Und dann, um alles abzuschließen, haben wir einen Submit-Button, der Login sagt. Alles klar, unten habe ich die PowerShell für die Validierungsskripte aufgenommen , die an dieser Stelle optional sind. Was? Wir können all diese Dinge so setzen, dass Sie fortfahren und dieses Formular replizieren können oder dass Sie es pausieren und replizieren möchten, oder Sie wollen es aus dem Projekt holen, das ist in Ordnung. Was werde ich an dieser Stelle weitermachen? Und wir werden den Code dahinter programmieren. Nein, wir machen nichts zu schickes. Joseon, wieder einmal versuchen wir nur, bestimmte Konzepte nach Hause zu fahren. Das erste, was ich Sie ermutigen würde, ist anonym zu erlauben. Denn wenn wir anonym nicht zulassen, wird es ein umständlicher Aufruf, was bedeutet, wenn die Cookie-Einstellungen versuchen , den Anmeldepfad wie im Startup definiert aufzurufen. Es wird diese Seite treffen. Und dann, wenn es nicht allein auf MOZ kann, würde im Trend zu der Seite mit einer Rückgabe-URL für die Seite bleiben und dann würde es nur, ich würde einfach brechen, so dass Sie es tatsächlich versuchen und sehen können, welche Art von Fehler Sie bekommen würden. So schwer fassbar in der Lage, diesen Fehler in der Zukunft zu sehen, weißt du, richtig? Und wahrscheinlich später können wir experimentieren und sehen, wie sie aussehen, aber einfach einen niedrigen anonymen Verdacht auf diesen Herzschmerz anziehen. Jetzt anstelle dieser Seite werde ich ein schnelles Modell erstellen. Und dieses Modell. Wird Input genannt werden. Also wieder, dies ist ein irgendwie Modell des vorhandenen Codes sind einige Kodak würde für Sie von einer Entität generiert werden, aber wenn wir dorthin kommen, werden Sie es sehen. Aber im Moment habe ich nur Immobilien für das Eingabemodell zu kaufen. Wir haben eine korrekte Standard-Rückgabe-URL und Tim Veto Fehlermeldung an. Wir brauchen das wahrscheinlich nicht einmal, aber hey, und dann haben wir eine Klasse namens Eingabemodell, die diese drei Felder nimmt. Alles klar, also pausieren, replizieren und weitermachen. Alles klar, also für unsere Get, ich werde es einfach ziemlich schnell nachrüsten, mit verwandelten es in eine öffentliche Aufgabe, asynchron auf Gettys Waschbecken, Das ist die Rückkehr, die Sie als Parameter über Standardwerte auf null sind. Und dann kann ich eigentlich eine Komponente der Knochenzuweisung hier machen , wir sagen nur, dass dein Kopf null ist, dann mache es gleich dem. Das ist also ziemlich genau das, was du siehst. Und dann setzen wir die Rückkehr, Sie sind eine Eigenschaft, um die Rückgabe-URL zu sein. Jetzt habe ich gerade erkannt, dass ich nicht die versteckte für die Rückgabe-URL auf dem Formular habe. Also, was ich tun werde, ist ein ausreichendes verstecktes Feld irgendwo. Ich werde es einfach auf das hier setzen. Und das wird für die Rückkehr sein, Rückkehr Euro, und seine Art wird versteckt werden. Also der Punkt der Rückkehr Ihre Liste, die Sie wissen, wann Sie sind, wenn Sie versuchen, auseinander zuzugreifen, um eine Seite zu geben, und es ist ein Login und Sie loggen in der Regel navigiert zu dem pH-Wert von, dass. Es wäre gegangen, wenn Sie bereits authentifiziert worden wären. Das ist es, was ihre Rückkehr Sie sind schon repräsentiert, oder? Also, was Sie auf Fertig klicken. Und dann sagte er: Hey, bitte loggen Sie sich zuerst ein. Es speichert die ursprüngliche Clique, das ursprüngliche Ziel. Okay, also das ist, was Sie tun, was ist der Grund, warum wir sehen, wenn Sie hier sind , auf welche Seite zugegriffen werden wollte? Diese behalten den Überblick. Nun, das nächste, was wir tun würden, ist, wo wir die tatsächliche Benutzererstellung und Validierung verarbeiten . Alles klar, was wir hier sehen, ist, dass wir eine Policy-asynchrone Methode haben. In Ordnung? Und dann innerhalb dieser Post-AC-Methode werde ich dort wieder zurückkehren URL. So gleiche Art von Komponenten M und kann hier wieder arbeiten. In Ordnung, wenn es nicht ist, wenn es null ist, dann standardmäßig auf die Homepage. Kein Problem. In Ordnung. Und wahrscheinlich kann ein wenig mehr Refactoring passieren, aber das ist in Ordnung. Wir können das allein für null, null in einem realen Szenario lassen , was Sie an diesem Punkt tun möchten, also Pause tut, wenn sie Benutzernamen, Passwort einreichen. Und wenn du willst, wollen sie in Erinnerung bleiben. An diesem Punkt würden Sie wirklich zur Datenbank gehen und sehen, ob dieser Benutzer existiert? Ja. Ok. Diese Aktionen, wenn nicht Auftrieb Eimer und sagen Sie bitte, sorry, aber er ist Validators, wer Sie sind. Das ist in Ordnung. Aber richtig. Nicht schlimmer als in Art von Demo-Gebühren. Also, was ich tun wollte, ist nur harten Code. Das ist keine gute Praxis. Generell nicht gute Praxis. Aber noch einmal, dies ist Demo-Zwecke. Ich wollte nur sehen, wie es Narren macht. Also werde ich nur auf harten Code und E-Mail-Adresse von Überschwemmungen. Siehe Admin, test.com. Sagen Sie, wenn die Person admin auf test.com mit einem Passwort von p bei Zeichenwort 1 eingibt, richtig? Das ist also mein spezielles starkes Zitat unzitiert starke Haltung, die ich normalerweise benutze. Aber das ist genau das, was ich hier noch einmal setze, für Demo-Zwecke gibt es hier ein paar Dinge falsch. Won Ihr Passwort sollte nie im Klartext sein. Ich benutze diesen Bus oder er sollte nie im Klartext sein. Also lege ich das nur für Demo-Zwecke raus. Später schauen Sie sich an, wie Sie das Passwort für die Passwörter hash tatsächlich aussehen, wenn sie für eine, also eine Nur-Text-Datei gespeichert werden . Nun, wenn wir diese Benutzer finden, also mal sehen, ist dies der Benutzer, nach dem wir suchen. Das ist es, was eingegeben wurde. Dann müssen wir eine Liste von Ansprüchen erstellen. Nein, ich werde behaupten, ist ziemlich viel Punkt der Daten über den Benutzer, richtig? Buchstäblich sagt das Wort eine Creme. Das ist der Grund, warum Klimt sein. Dies sind also Bits von Informationen, die der Benutzer hat. Das Meer, die Meere, wer ich bin, das ist mein Anspruch auf Ruhm. Das ist, wer ich behaupte zu sein, wer auch immer du es einfrieren willst. Das ist im Grunde, was ich sauber ist, stellt einige Gebäude unsere Liste von Ansprüchen hier. Ich sehe Barclay und z gleich einer neuen Liste von Ansprüchen. Und dann werde ich hier ein paar Ansprüche aufstellen. Also Nukleon, wo der Liste einen Kern hinzufügen. Und wir haben hier einige Konstanten, die unsere Bedürfnisse reduzieren, sind ID und magische Strings. So gibt es bestimmte Behauptungen, dass das System immer erkennt und automatisch sucht und sie sind irgendwie gespeichert, werden uns durch dieses Bibliothekssystem Punktsicherheit, clean.com-Typen gegeben, richtig? Sie müssten also wahrscheinlich diese using-Anweisung einschließen , wenn Sie diese Codezeile einfügen. In Ordnung, So Ansprüche Typen Punktnamen-Bezeichner. Wenn Sie sich also die statische Zeichenfolge ansehen, sieht es so aus. Stellen Sie sich nun vor, dass Sie diese Zeichenfolge jedes Mal eingeben müssen, wenn Sie den Bezeichner benennen wollten. Genau wie mit dem Cookie aus, haben sie uns dies mit Konstanten gegeben, die ein Fan von global akzeptabel sind, oder sie arbeiten mit JWT vor unseren JSON-Web-Token vorher. Oder, wissen Sie, jede Art von API, würden Sie immer Ansprüche sehen, wie ein gemeinsames Thema, wenn es um Sicherheit geht. Und dann ist diese formatierte Zeichenfolge hier, die Sie sehen, ein offener XML-Standard ist, von vielen verschiedenen Systemen akzeptabel. Sie müssen zu.net Core, aber dotnet Core wird von der Tatsache genommen , dass wir Dinge zur Verfügung stellen, die jeder andere verwenden kann, richtig? Also unsere leichteren Dinge, jeder, der dünner ist. Also weiter, behauptete test.html in Feuer. Welchen Wert möchten Sie als dieser gespeichert werden, richtig? Sie haben Typen Punktnamen beansprucht, okay? Sie würden Ihren Benutzernamen hier eingeben. Also bin ich nur schwer, einige Dinge zu programmieren, die sie irgendwie eine Vorstellung davon bekommen können, was gehen würde. Wir sind neue, saubere, saubere Typen. Welche Rolle spielt diese Person? Es ist ein Admin, ist der Benutzer Brennereien Käufer, et cetera, neu, sauber. Und dann können Sie weitere Ansprüche hinzufügen, wie er von zufälligen Datenpunkten will, zufälliger Wert. Sie können so viele Ansprüche hinzufügen, wie dieser Benutzer benötigt, um im System arbeiten zu können. Sie können sie hinzufügen, oder? Andernfalls werden sie, Art von wird standardmäßig hinzugefügt. Was zeige ich dir nur noch einmal alle Muttern und Schrauben, die zusammenpassen, um das zu machen, was wir ein Anspruchsprinzip nennen. Also, nachdem wir die Liste der Ansprüche haben, dann wollen wir einen Identitätsbenutzer erstellen. Also sagen Sie var Identitätsbenutzer gleich einer neuen Anspruchsidentität, die diese Liste von Ansprüchen nimmt, die gerade erstellt wurde, oder? Und dann sagen wir, dass wir die Cookie-Authentifizierungsstandards verwenden, dieses Authentifizierungsschema, richtig? Also hier sehen wir, bitte fügen Sie diese Liste der wichtigsten Ansprüche zu diesem bestimmten Schema, das Cookies ist. Nein, Sie können nicht mehrere Identitäten haben. Sind mehrere Schemas, die dieselbe Identität verwenden, richtig? Oder ein Prinzip. Also hier sehen wir VAR-Prinzip ist wirklich nur der Identitätsbenutzer genommen, oder? So können Sie mehrere Prinzipale, mehrere Identitäten Benutzer mit mehreren Schemas haben. Später werden wir sehen, wie wir Login mit Drittanbieter-Bibliotheken abgewickelt haben. Unsere Systeme, werden wir sehen, dass wir andere Ansprüche hinzufügen können, erstellen andere Identitäten mit den Ansprüchen aus diesen, richtig? So Identitätsbenutzer-weit-Prinzip ist gleich dem neuen Prinzipal. Und dann ist das letzte, was wir tun müssen , tatsächlich diesen Benutzer zu protokollieren und alles zu senden, was wir brauchen, um der Anwendung mitzuteilen, dass diese Person signiert ist, damit sie sie in der Anwendung anmelden muss. Also rufen wir den HTTP-Kontext auf. Großartig. Und das stellt im Grunde die flache Linie dar, die Baseline, wo jede einzelne Anfrage und Antwort durchläuft. Also, wenn wir den Kontexten mitteilen, um sich mit Cookie-Authentifizierung anzumelden, richtig, der Prinzipal, so erstellen Sie unsere, lassen Sie diese Anwendung wissen, dass dieses Prinzip mit diesen Behauptungen, dass der Benutzer im Grunde ein angemeldeter Benutzer ist. Haben wir sie identifiziert? Und Sie können sitzen, wenn es hartnäckig ist oder nicht. So E-Sport-Assistent wäre wie, wenn Sie sagen erinnern Sie mich auf jeder kühlt Ihren Computer und schalten Sie es wieder ein und Sie sind immer noch angemeldet. Das ist so ziemlich alles, was sie dort tun, sie sehen, ja, erinnere dich an diesen Cookie für das nächste Mal, so dass der Benutzer es angekreuzt hat, um nicht ohne gefälschte TO persistente Punkt-Cookie ist für ihre Authentifizierung. Nach all dem werden wir lokale Weiterleitung mit dieser Rückgabe-URL zurückgeben. Also verwenden wir lokale Umleitung als eine dieser Sicherheitsfunktionen und alles, weil es Zeiten gibt, in denen Leute entführen könnten, verwende ich eine Sitzung, um ihnen ihre eigene Version der Website zu geben , die sie wollten, dass sie Tool oder etwas anderes. Also loci umleiten, um sicherzustellen, dass es nur direkt auf etwas gelesen wird , das intern ist. Ursache denken Sie daran, dass URL-Abfragezeichenfolge zurückgeben, die anfällig für Änderungen ist. Also, wenn jemand in Google.com setzen würde, würde es tatsächlich weg zu google.com navigieren, sobald ich mich authentifiziert habe. Denk darüber nach, was auf unserem Tucker damit tun könnte. So Logo, die Umleitung ist eine sehr einfache, sehr effektive Möglichkeit zu versuchen, gegen diesen Umleitungsangriff zu mildern. Nun, ausgehend von dieser if-Anweisung, werde ich nur sagen, anders, Rückkehr auf autorisierte oder nicht autorisierte hier, wenn Sie die API-Entwicklungen missbraucht werden, die Ihnen eine 40 auf Antwort geben, dass die in-order, Sie sind nicht berechtigt, Tests oder eine Auktion durchzuführen. Also hier, wenn Sie versuchen, sich anzumelden und es fehlschlägt, müssen wir nur wissen, dass Sie nicht autorisiert sind. Dies ist ein sehr einfaches Beispiel für nackte Knochen noch einmal, Ordnung, also lassen Sie uns das für einen schnellen Spin nehmen. In Ordnung, also haben wir unsere Anwendung, ich habe Kategorien geklickt und es hat mich hier navigiert. Also unser Test ist admin test.com und unser Passwort ist P, Das ist eine SSD oder RDD1, richtig? Nur um sicherzustellen, dann klicken wir auf Login und dann werden wir auf die Kategorie-Seite umgeleitet, oder? Also, das war, dass Rückgabe-URL, Klicken Sie auf Kategorien, angemeldet und einfach navigiert uns zu Kategorien. Alles klar, wenn Sie also nicht von der Abfragezeichenfolge sind, sehen Sie nicht, dass es diese Art von Fragezeichen Rückgabe-URL gleich hatte, und in einigen URLs nimmt einige dort zurück, die zurückgegeben wurden. Weißt du, es fragt mich, ob ich sehen will, ob das in Ordnung ist. Aber Sie bemerken, dass es wirklich keinen Hinweis darauf gibt, dass wir rot eingeloggt sind. So kommt der Zugriff auf die Benutzerinformationen ins Spiel. Und was wir in der nächsten Lektion tun wollen, ist zu verstehen, wie wir auf dieses Anspruchsprinzip zugreifen und die Abmeldefunktion erleichtern können . 5. Erforschen von Identity und Hauptmann: Hey Leute, willkommen zurück. Das letzte Mal, als wir hier waren,saßen wir unsere Login-Funktionalität, die wir so saßen wir unsere Login-Funktionalität, weit wie möglich arbeiten konnten , weil wir in der Lage waren, die Authentifizierung auf dem Bildschirm zu übergeben und tatsächlich sehen, wie wir zu navigieren, wo wir brauchen es zu gehen. Der wahre Beweis in jeder Anwendung , obwohl jemand angemeldet ist, ist, wenn Sie sie anzeigen, hallo und Benutzername oder einige dort, gibt es immer einen visuellen Hinweis, um eine erfolgreiche Authentifizierung zu begleiten oder eine authentifizierte Sitzung, während sich die Person in der Anwendung befindet. Also wollen wir wissen, dass unsere Anwendung eingerichtet ist, um den angemeldeten Benutzer anzuzeigen, ihren Benutzernamen tatsächlich, und wahrscheinlich ändern, was im Menü in Bezug auf die Tatsache angezeigt wird , dass sie nicht authentifiziert sind. Wir werden in dieser Aktivität auch einen Blick darauf werfen, wie die Ansprüche uns dabei helfen, all das zu tun. Also, was ich möchte, dass Sie tun, wäre eine, gehen Sie voran und erstellen Sie eine neue Teilstunde. Wir werden es Login teilweise nennen. So können Sie einfach direkt unshared aufrufen, klicken Sie auf Hinzufügen und erstellen Sie dann die neue Razor Seite oder tatsächlich erstellen Sie einfach ein neues Element. Und dann können Sie Rasiermesser Ansicht treffen. Also, wenn Sie ein Rezept erstellen und Sie gehen, um den pH-Wert und den Code hinter. Wir brauchen nicht beides. Wir wollen nur die Akte selbst. So können Sie diese Hitze Rasiermesser Ansicht, nennen Sie es Unterstrich Login teilweise. In Ordnung, ich habe bereits eine, also werde ich Ihnen nur zeigen, was zu tun ist, und dann klicken Sie Hinzufügen und dann bekommen Sie die neue Datei von selbst, richtig? Also, wenn Sie die Akte bekommen, werden wir es einrichten Nein. Damit es als Cue fungieren kann, dass wir das Display verwenden werden, verwendet der Login Informationen. Also, wenn Sie diese Datei haben, können Sie voran gehen und anfangen, es so zu montieren. Man erstellt eine neue ungeordnete Liste, geben Sie ihr die Klasse navbar nav. Grund dafür ist, dass wir in die Navigationsleiste und Allele passen wollten, was ich Ihnen in wenigen Sekunden zeigen werde. Also die Sache ist, dass, wenn Sie jemals ein MVC oder ein Dotnet Core-Projekt im Allgemeinen gerüstet haben, mit der Identität enthalten. Gut, ich habe tatsächlich diese Art von aus der Box bekommen, aber da wir es von Grund auf tun, damit wir die Muttern und Schrauben sehen können und wie alles verbunden ist. Ich zeige Ihnen nur, wie Sie diese Datei schnell einrichten können. Also werden wir den Login teilweise haben, geben Sie ihm diese ungeordnete Liste mit Klasse navbar. Und dann werden wir eine if-Anweisung haben. So sehen wir, ob die Benutzer-Punkt-Identität authentifiziert ist. So stellt der Benutzer hier das Anspruchsprinzip dar, dass kein existiert in den HTTP-Kontexten tatsächlich immer existiert. Aber bis wir die Funktion aufrufen, die anmeldet, ist sie nicht authentifiziert und hätte keine Ansprüche. Deshalb sehen wir, wenn wir uns anmelden, die Anmeldung mit diesem Authentifizierungsschema. Das bedeutet, dass Sie nicht authentifiziert sind. Sie haben Ihren Auftraggeber und der Auftraggeber hat Identität und Identität als Anspruch. So kommt alles zusammen nicht, um in die HTTP-Kontexte Benutzerobjekt gesetzt werden, oder? Obwohl ich den Benutzer hier selbst sehen kann, ist der Benutzer in Wirklichkeit genau wie ein globales Objekt, das ich hier aufrufen kann, aber es ist wirklich ein Teil der HTTP-Kontexte, weil ich es nicht sehen kann, dass Punkt-Benutzer, es sind wirklich die gleichen Objekte, richtig? So zeigen Sie nur, wie alles miteinander verbunden ist. So user.name, identität, dot wird authentifiziert, sagt ja oder nein. Wenn es authentifiziert ist, dann wollen wir unsere nav Artikel hier. Und ich lege es nur in den Navbutton Link. Also sieht alles irgendwie einheitlich aus, aber es geht nirgendwo hin. Und wir geben ihm den Wert von san Benutzerdaten Identität Punktnamen. Also Name hier steht für einen Anspruch. Und denken Sie daran, dass wir noch sitzen von den Behauptungen, die wir sagten , um diejenigen zu nennen, die ihnen bewusst zwei verschiedene Werte gegeben werden , so dass wir sehen können, welche von ihnen wirklich verwendet wird, und wir sehen einen Entitätsnamen. Also werden wir das in ein paar sehen. Also haben wir Identitätspunktnamen, und dann haben wir diese Logo-Schaltfläche, die zu einer Seite navigieren wird, die wir im Begriff sind, auch im Auth Ordner namens Logos zu erstellen. Und sein einziger Zweck ist es, die Personsalze zu protokollieren. Wenn sie also authentifiziert sind, sollten sie ihren Benutzernamen und ihr Logo geboren sehen. Und wenn Sie möchten, können Sie das wahrscheinlich qualifizieren und Hallo, Punkt-Benutzername oder willkommen sagen . Wissen Sie, etwas Freundliches, wenn sie nicht authentifiziert sind , an denen in der anderen Abschnitt gewesen wäre, dann wollen wir die Fähigkeit, sich zu registrieren anzeigen. Ich habe nicht nur die Seite zumindest noch nicht. Aber die Möglichkeit, sich zu registrieren sowie die Möglichkeit, sich anzumelden. Und da ich hier bin, sehe ich, dass ich irgendwie ändern muss, dass dies B-Seitenpfad ist und es von Schrägstrich Login rauschen lassen muss. Also, bevor wir das alles machen oder bevor wir in das einspringen, was mit dem Logo passiert, möchte ich, dass wir uns Watts ansehen. Das wird nachgeben. Im Moment bin ich also nicht eingeloggt. Wenn Sie eingeloggt sind, werden Sie wahrscheinlich etwas anderes sehen, aber das ist in Ordnung. Ich gehe einfach voran und logge mich ein. Und wenn ich das tue, sehen Sie hier meine Begrüßungsnachricht und Benutzername. Also, das bedeutet, dass die Behauptung, die wir diesen Wert geben , ist das, was von einem Entitätsnamen zugegriffen wird. So klar, das ist nicht wirklich das, was wir wollen. Wir möchten hier keinen Willkommens-Benutzernamen sehen. Stattdessen möchten wir den tatsächlichen Benutzernamen anzeigen. Also geben wir ihnen einfach die entsprechende Variable, die das speichern würde , was wir sie als Anzeigename gefragt haben. Manchmal möchten Sie einen Vorname, Nachname anzeigen. So einfach ist es. Sie weisen diese Rolle nicht Entzündungen eher dieser Behauptung zu. Und dann wird es einfach so angezeigt. Also, wenn ich das umschalten, wenn ich zurückgehe und einen Blick auf die Seite werfe, werden Sie feststellen, dass ich hier immer noch einen Benutzernamen haben werde. Warum habe ich hier noch einen Benutzernamen? Auch wenn ich nur klar gesagt ändern und sauber. Das liegt daran, dass der Anspruch erstellt wurde oder alle diese Ansprüche erstellt wurden. Diese Objekte werden erstellt und diese wurden angemeldet und im Cookie gespeichert. So ist das Cookie immer noch vorhanden, während ich Änderungen vornehmen kann, aber bis ich mich abmelde und Log-Bikinis ging, um die Datenidentität zu rekonstruieren. Es ist also ziemlich schwierig, eine Identität zu ändern , nachdem sie bereits konstruiert ist und bereits authentifiziert werden kann. Aber es ist in der Regel nicht etwas, das die Leute üben zu tun. Der Punkt ist also, dass Sie alle Ihre Ansprüche und Ihre Identität aufbauen möchten , bevor Sie den Benutzer authentifizieren. Jetzt werde ich nur Boote anmelden, damit das die eingeloggte Sitzung töten sollte. Ich sehe, ich habe mich gerade ausgeloggt. Also lassen Sie uns einen Blick auf das, was die Logo-Seiten tun. So erstellen Sie eine neue Rezepte. Also die Ergebnisseite, Sie können entweder eine leere verwenden, es ist in Ordnung, aber wir wollen sowohl die Ansicht als auch den Code dahinter. Die Ansicht ist also leer. Aber der Code hinter Git wird so etwas tun. Sie könnten also bekommen, dass die Methode „get“ vermeidet, Sie können immer einfach ändern, dass es unsere eigene ist, um eine AsyncTask von Aktionsergebnissen auf get, on, get async zu sein . Und dann werden wir immer den HTTP-Kontext-Aufruf der asynchronen Anmeldemethode verwenden nirgends die gesamte Cookie-Authentifizierung signieren, richtig? Aus diesem Grund möchten wir einfach auf die Indexseite unserer gesamten Anwendung zurückkehren. An diesem Punkt könnten Sie wahrscheinlich über Rückgabe-URLs und all diese Dinge nachdenken, aber wir werden nicht in diese Fanciness geraten. Alles, was wir nur wissen wollen, dass wir uns an dieser Stelle ausloggen, richtig? Das ist also so ziemlich alles, was das Logo tut. Also versuchen wir zu sagen, ich brauche noch ein Mal. Wenn ich mich also einlogge, bin ich auf meiner Login-Seite, gebe meine Anmeldeinformationen ein, und dann gehe ich hin. Nein, es baut den Anspruch mit dem Wert der E-Mail-Adresse Boston als Name, sauber. Wenn ich mich abmelde, wird diese Cookie-Authentifizierung zu beenden und mich wieder auf die, auf dem Indexbildschirm, richtig? Wenn ich nach dem Login zu Werbeanzeigen gehe oder, oh sorry, dass man nach dem Login für Kategorien nicht geschützt war. Da gehen wir. Wenn ich sage Erinnern Sie sich an mich, das wird bestehen bleiben. Selbst wenn ich den Browser schließe, wird der Cookie immer noch existieren. Klicken Sie auf Anmelden. Und dann, wenn wir nur zu Inspect Element oder F2 auf Ihrer Tastatur gehen und wir springen über zur Anwendung. Sie werden tatsächlich die Cookies sehen, die existieren, während wir die CSE hier machen, Identitätsanwendung, richtig? Kekse, all diese Dinge. Also, wenn ich löschen, lassen Sie mich einfach löschen alle diese Cookies auf Logos Logos Login. Hier sehen Sie, dass der Cookie erstellt wird. Auf der ganz einfachen Ebene können Sie die Cookie-Authentifizierung aktivieren, wie wir anzeigen können, wer eingeloggt ist und wie wir den Fluss unserer Anwendung und Logos steuern können. Code von Grund auf neu geschrieben. 6. Erforschen von Identity und Hauptmann: Hey Leute, willkommen zurück. Also in der vorherigen Lektion haben wir uns angesehen, wie wir auf den Anspruch zugreifen können, damit wir den Login einrichten können, Halten Sie die Cookie-Authentifizierung funktioniert und alles, den gesamten Workflow. In dieser Lektion möchten wir irgendwie auf diesem Wissen aufbauen und uns ansehen, was es dauern würde, um Drittanbieter-Login-Engine zu erleichtern. Also offen zu wissen, dass wir unsere eigene Login-Engine so anämisch gebaut haben, wie der Login-Code ist, oder? Nein, weil wir hart codiert haben, wonach wir suchen. Wir hätten wahrscheinlich eine Datenbank verwendet , auf der wir später eine Datenbank verwenden werden. Nun, nur um die Grundlagen zu durchlaufen, sehen wir, dass wir die Eingabe im Vergleich zu erwarteten Werten überprüfen. Und dann gehen wir weiter und machen die Authentifizierung. Wissen Sie, was, wenn Sie sich auf Drittanbieter-Plattformen verlassen möchten? Weil viele der Zeiten, wenn Sie auf Websites gehen, würden Sie so etwas wie ein Login mit Facebook Login mit Tutor Login sehen, mit Google, et cetera. Und diese Art von Geistern des Benutzers. Die, die, was soll ich nein sagen, die mühsame Aufgabe, in der Füllreihenfolge Formular zu setzen , wenn sie bereits diese Scans eines Kegels haben. Also hier wollte ich nur die Grundlagen zeigen, wie du das Loch erleichtern würdest. Wir würden es zu dem hinzufügen, was wir derzeit haben. Wir werden es jedoch nicht bis zur Fertigstellung tun können, da Sie Ihre App registrieren müssen und eine Client-ID und ein Client-Geheimnis erhalten, was ich Ihnen zeigen werde, dass, wenn Sie all diese Dinge hätten, was erforderlich wäre, OFF Sie es zu bekommen arbeiten in Ihrer Anwendung. Also beginnt es in der Startdatei, richtig, genau hier wären wir AD-Authentifizierung gesagt haben. Wir sagten, wir wollten ein Cookie-Schema von hier aus. Wir können tatsächlich, ich werde sagen Daisy Chain, aber wir können tatsächlich, mit der Fluent API, zusätzliche Bibliotheken hier hinzufügen, richtig, also ist das seltsame Cookie, aber was ist, wenn dieses Semikolon es nicht beendet dort könnte ich so etwas wie Google hinzufügen sagen. Und das würde seine eigenen Optionen nehmen. Und der Lambda-Ausdruck mit Optionen, die er brauchen würde, richtig? Also hier gibt es offensichtlich eine rote Linie, aber wenn ich Kontrollpunkte mache und alles, was mir nicht die Aufforderung für die Bibliothek gibt. Das ist in Ordnung. Wenn wir zu New gehen Verkaufstrends bekommen, dass eine Abkürzung Weg. Und das würde natürlich nicht funktionieren. Also lasst uns einfach zu einem neuen Git springen. Und in NuGet Wochenendboroughs und finden Sie die verschiedenen Bibliotheken für unsere OpenID-Anbieter. Also, wenn wir einfach eintippen, lassen Sie mich versuchen, offene ID. Alles klar, nicht OpenID, ich entschuldige mich, Geben wir die Authentifizierung ein. Das ist also mehr globale Bibliothek zu dem, was wir wollen. Also unter Authentifizierung sehen Sie eine Menge, aber dann werden Sie sehen, dass wir auch Platz für Google, Facebook, Microsoft sind Miteigentum, und Twitter, richtig? Also für jede von ihnen, die Sie als OpenID-Anbieter für die Authentifizierung auf Ihrer Anwendung verwenden möchten. Du kannst gleich voran gehen. Also versuchen wir es mit einem Google. Ich bin eigentlich lassen Sie uns einfach alle von ihnen installieren, denn am Ende des Tages wollte ich Ihnen nur zeigen, wie die Sitzungen für jeden aussehen würden. In Ordnung. Also habe ich sie alle installiert. Und wenn ich zurück zu meiner Startdatei springe, werden Sie jetzt sehen, dass bei Google keinen Fehler mehr hat. Wie ich schon sagte, ich kann alle Nase, Kinn. Also, was ich tun werde, ist nur bei Google duplizieren. Und von hier aus werde ich einfach sagen, Twitter hinzufügen. Facebook. Da gehen wir. Und fügen Sie Microsoft hinzu. Alle diese Bibliotheken sind also am niedrigsten, um diese als potenzielle Authentifizierungs-Engines für unsere Anwendung zu verwenden. , was auf der Ich zeige Ihnen, was auf dergrundlegenden Ebene für die Verbindung zu diesen Diensten gefeuert wurde, oder? Also die Bibliotheken, wir wissen, dass die API-Standorte halten, um mit der relevanten API für die Authentifizierung gegen einen Dienst zu sprechen. Als Drittanbieter müssen Sie jedoch sicherstellen, dass Sie Ihre Websites oder Ihre Anwendung bei Google oder auf Twitter, Facebook, was auch immer, registriert haben . Und sie würden ihm einen Ausweis und ein Geheimnis geben. Sie müssten also diese beiden Werte angeben, null. An diesem Punkt. Es wäre so einfach, als den beanspruchten Schlüssel hier einzugeben und das Geheimnis hier, richtig? Aber Sie würden sie wahrscheinlich nicht hart codieren oder sie im Quellcode beleuchten wollen . Denn wenn Sie dies dann auf GitHub oder einem Quellcodeverwaltungsformular einschalten, wird es für jeden global zugänglich sein und jeder kann sein Recht entführen. Sie möchten diese in eine Form von Einstellungen setzen, die gesichert ist. Das würde also standardmäßig auch die AP-Datei settings.js ON-Datei eliminieren da dies so öffentlich zugänglich wäre, wie sie in die Startdatei eingefügt wird. Hier reden wir also über Geheimnisse. Also in Ihrer Anwendung, wenn Sie die Web-Projekte sind, können Sie tatsächlich sagen, Benutzergeheimnisse verwalten. Und dann können Sie von hier aus Ihre Werte, Ihre Schlüsselwertpaare, einfügen . Also zum Beispiel, wenn wir in den Schlüsselwert Paar setzen waren , sind die ID und Geheimnis für sagen, Google. Sie würden einen Abschnitt namens Google vielleicht erstellen. Und Sie werden feststellen, dass es die gleiche Art JSON-Datei ist, die wir mit der App settings.js IN gelesen gewöhnt sind. Also würden Sie sagen, Google und dann setzen Sie in den Schlüssel, der beansprucht würde ID. Und dann setzen Sie in den Schlüssel hier, was auch immer es ist, ihre eigene hier, und helfen Sie mir, meine Rechtschreibung richtig zu bekommen, dann würden Sie Ihre Klientin geheim. Also lass mich einfach rüber springen und sicherstellen, dass ich es nicht falsch buchstabiere. Du würdest also Kundengeheimnis sagen und dann würdest du hier geheim sehen. Alles klar, das ist im Grunde das, was du tun würdest. Und so viele von ihnen wie du hast, hast du Google und Facebook, richtig? Wird das Gleiche sein, et cetera, et cetera, et cetera. Also alle diese würden in dieser Datei gespeichert werden. Und wenn Sie neugierig sind, wo das sezerniert ist, wird es tatsächlich in einem geheimen Verzeichnis gespeichert, das über dieses angerufen wird, was auch immer dieser Wert darstellt, das ist es, wo er ist. Der Gedanke, dass das für Sie wenig Sinn macht, und ich kann es nicht viel besser erklären, als das ist der Grund, warum es ein Geheimnis genannt wird, richtig? Also, dort würden diese Geheimnisse gespeichert werden und so etwas, irgendwelche API-Schlüssel oder irgendetwas, das irgendwie sicher ist, sollten Sie setzen, stellen Sie sicher, dass Sie es in diese JSON-Punkt-Geheimnisdatei einfügen. Eine alternative Möglichkeit, in den Geheimnissen zu verwalten, könnte die Verwendung der Konsole sein. also die Package Manager-Konsole verwenden, könnten Sie tatsächlich etwas wie.net-Benutzer-Dash-Geheimnisse sehen. Das vervollständigt init nicht und das würde es beginnen. Und dann unter, dass Sie sehen, dass dotnet Geheimnisse gesetzt verwendet. Und dann würden Sie wie unsere Schlüsselwertpaare einfügen, würde ich sagen, etwas wie Google Doppelpunkt, Client-ID, was den Abschnitt auf Google und die Schlüssel-Client-ID bedeutet. Und dann der Wert des Schlüssels hier. Also, egal, was auch immer einfacher für Sie ist, Sie können es aber tun. Diese Wellen, vielleicht verwenden Sie Visual Studio nicht. Wenn Sie Visual Studio Code verwenden, möchten Sie wahrscheinlich trotzdem den Befehlszeilenansatz verwenden. Das ist, wo Sie das Geheimnis speichern würden und alle, um auf diese Geheimnisse zuzugreifen, so ziemlich müssten Sie zur Konfiguration gehen. Anstatt also zu schreiben und den Wert, den Sie Konfiguration und die Verwendung von eckigen Klammern sagen würden , würden Sie sich den Schlüsselwert ansehen, der so erscheint, der Abschnitt eher Doppelpunkt der Schlüssel, richtig? So wie Sie es in der Befehlszeile erstellt hätten. Hier sind Bereiche, die nur Apologen kennen, aber Google, das ist ein Abschnitt und dann Client-ID lassen Sie mich die Rechtschreibung beheben, so dass ich konsistent bin. Also Google und dann Client-ID. Und dann würde es wissen, einfach zu gehen und in die Geheimnisse nach gleichen Ding für ein Kundengeheimnis und für jedes andere zu suchen. Ordnung? Das ist so ziemlich, wie Sie Ihre geheimen Schlüssel sichern würden, die Sie für Ihre Drittanbieter-API wünschen würden. Also zeige ich Ihnen im Kontext von Authentifizierungsanbietern Was ist im Allgemeinen, ob es sich um einen E-Mail-Anbieter handelt, ist alles andere, was API-Schlüssel gegeben hat, den Sie sicher halten müssen, Das ist sein ganzes, Sie würden es im Grunde tun und so würden Sie darauf zugreifen, wenn es benötigt wird. Nun, außerhalb davon, was wäre, wenn ich vielleicht das Standardschema ändern wollte von der Herausforderung Schema eher von Cookies. Also richtig, nein, was wir haben, ist der Cookie als der, der der erste war, den wir eingerichtet haben. Aber bevor wir sagen, dass ich innerhalb dieser AD-Authentifizierung Cookie würde, könnten wir dies tatsächlich in eine ganze Optionskonfiguration ändern. Also verwende ich einfach den gesamten Lambda-Ausdruck und dann das Objekt. Und dann im Inneren von hier können wir alle Optionen wie oder Punkt, Standard-Authentifizierungsschema, Standard-Challenge-Schema, Standard-Anmeldeski angeben, oder? Wenn Sie also standardmäßig Facebook verwenden möchten, können Sie all diese Dinge hier hinzufügen. Wenn ich also sagte, dass das Standardschema der Authentifizierungscookie sein muss, ist das in Ordnung. Aber was ist, wenn meine Herausforderung, bevor ich einen Cookie erstellen, Meine Chaldäer gefolgt werden, er und ich wollte es sein, Ich könnte sagen, Google-Standardwerte, Das ist eine Konstante, die ich bekomme. Da gehen wir von dieser Google-Bibliothek. Standardmäßig ist das Punkt-Authentifizierungsschema. Und ich bin mir ziemlich sicher, dass ich diese Standardwerte für jeden anderen habe. Also Facebook Standardwerte. Mal sehen, ob es eine gibt. Standardwerte, Gedanken, Authentifizierungsschema, richtig? Unabhängig davon, welches von ihnen Sie das Standardauthentifizierungsschema sein wollten, können Sie voran gehen und angeben. Das würde also bedeuten, dass, wenn wir zu einer Seite navigieren, die durch unseren Autorisierungsfilter geschützt ist , es sagen würde, was die Standardmethode ist, die meine Benutzer sich authentifizieren sollen. Also mit der automatischen Einrichtung all dies war das die Standard-Cookie-Authentifizierung ein Standard. Es ging direkt unsere Login-Seite, aber nein, ich sehe, ob die Person nicht direkt auf die Login-Seite geht, wie sie Slash Login navigieren und dorthin gehen. Wenn sie gehen, um die IP-Adresse geschützt ist, dann möchte ich, dass sie direkt auf die Facebook-Challenge pH gehen, an welchem Punkt Ihre Anwendung würde weg zu Facebook navigieren, erlauben Sie ihnen, sich mit ihrem Facebook-Konto zu authentifizieren und dann Comeback mit allen Ansprüchen und Informationen von Facebook. Und dann ist die Sache, dass diese Behauptungen, die wir in unserem Login als Geld und die Nähte eingerichtet haben , diese Ansprüche sind, was Sie im Grunde von jedem OpenID-Anbieter bekommen werden, von jeder Authentifizierung auf Drittanbietern Authentifizierungsplattform Dies sind allgemeine Ansprüche, die gemeinsam genutzt werden. Also ist es irgendwie wie ein Standard. Deshalb, wenn LC und das dann, obwohl es Name hier sagt, werden Sie diese sehr lange aussehende URL sehen. Diese URL bedeutet also, dass jede Anwendung, egal ob es sich um dotnet, Facebook, Python handelt, was auch immer sie ist, alle auf das gleiche Niveau kommen können. Und ich stimme zu, dass dies das ist, was ich Anspruch genannt habe, und so werde ich es in meiner Anwendung verwenden. Alles klar, das ist, was ich aufhören werde. Wie gesagt, Sie müssten gehen und unterschreiben, stellen Sie sicher, dass Sie Ihre Bewerbung registrieren und so weiter. Aber auf der ganz einfachen Ebene, so würden Sie das lösen. Eine Sache, die ich empfehle, bevor ich fortfahre, ist, den zusätzlichen auszukommentieren. So demonstrieren Sie, dass halten, um die Client-ID und das Geheimnis mit der Konfiguration hinzuzufügen. Aber wenn Sie hier nichts vernünftig bereitstellen, werden Sie Laufzeitfehler erhalten. Ich empfehle, dass Sie sie einfach kommentieren oder löschen oder nur diejenigen haben, die Sie wissen, dass Sie verwenden werden. Du, ich werde sie hier auskommentiert lassen, so dass, wenn du den Quellcode siehst, ich Bezugspunkt haben kann. Aber wenn Sie Ihnen noch einmal empfehlen, kommentieren Sie sie aus, damit Sie beim Ausführen keine Laufzeitfehler erhalten, richtig? 7. Abschnitts-: Alles klar, Leute, das war's für diesen Abschnitt. Lassen Sie uns eine kurze Zusammenfassung dessen machen, was wir erreicht haben. Also kamen wir hierher, ob wir von Identität wussten oder nicht. Wir wussten wahrscheinlich, was die Identität für uns tun könnte. Aber in dieser Situation begannen wir von Grund auf grundlegende Verpflichtung, grundlegende Datenbank. Ob es einfach oder kompliziert ist, die Prinzipien bleiben gleich. Wir wissen, dass wir zum Anfang der Woche gehen können und ein Satz der Datenbank können wir die Authentifizierung in unserer Anwendung einrichten. Wir können es wissen lassen, dass es Cookie-Authentifizierung verwenden soll. Wir können es auf den Anmeldepfad drehen, den wir wollen, wer auch immer benutzerdefinierte Seite. All diese wunderbaren Dinge. Wir können unsere globale Autorisierungsrichtlinie für die Anwendung einrichten. Daher müsste auf jede Seite standardmäßig von einem authentifizierten Benutzer zugegriffen werden. Wir wissen auch, dass wir beim Start die Middleware hinzufügen müssen, um die Authentifizierung zu verwenden, was es empfehlenswert ist, dass wir das vor der Verwendung Autorisierung machen, die normalerweise sowieso aus der Box kommt. Nun, IT-Seite dieser Tür schauten wir uns an, ein einfaches Anmeldeformular einzurichten. Ich hatte einige zusätzliche Links hinzugefügt, um anzuzeigen, wie es aussehen würde wenn wir Login mit den Drittanbieter-Plattformen anzeigen. Und bevor ich vom Start fortfahre, haben wir uns auch das Hinzufügen von sind einige der Schritte zum Hinzufügen von Drittanbieter-Authentifizierung, wie man die Claim-Schlüsseldrüse im Geheimnisbereich unserer dotnet Core-Anwendung verbirgt. Also all diese wunderbaren Dinge, die wir erreichen konnten. Wir haben uns auch die Tatsache angesehen, dass wir anonym Hallo können. Also, wenn wir es nicht getan haben, werden sie globale Autorisierung. Wenn Sie autorisieren möchten, wer eckige Klammern verwenden würde und sagen, autorisieren über die Seite oder Aktion, die wir einschränken möchten. Andernfalls müssten wir sagen, anonym zulassen, wenn alles eingeschränkt ist, was wir zulassen wollen, dass bestimmte Seiten auf authentifizierte Person zugegriffen werden. So wie unsere Homepage auf definitiv anonym erlauben, so dass es unsere Zielseite sein könnte. Wir haben uns auch mit der Einrichtung der zugreifenden Ansprüche befasst. Nach dem Login wissen wir, wie man dieseAnsprüche Identität und dann das Anspruchsprinzipaufbaut Ansprüche Identität und dann das Anspruchsprinzip und dann letztendlich die Person signiert den Cookie auf dem Weg erstellt. Und dann, wie Sie auf diese Bildschirme zugreifen, um Informationen von der authentifiziert diese Person anzuzeigen . Also mit all dem plötzlichen fertig, werde ich das nur überprüfen, weil GitHub ist, wo wir all unsere Änderungen Truck speichern, alles, was wir tun, während wir weitermachen. Also setzt meine schnelle Nachricht dort ein und gehe voran und begib alles und sinke und lass das hochladen. Und das war's für diesen Abschnitt. Also sehe ich dich bald. 8. Was ist die Identity: Hey Leute, willkommen zurück. In diesem Modul werden wir uns die Identitätsbibliothek und alle Funktionen ansehen , die sie uns nur für den Kontext bietet. Identitäts- oder Identitätskern ist die Bibliothek, die mit beliebiger Geschwindigkeit in einer Kernanwendung geliefert wird. Und es ermöglicht uns, benutzerbezogene Vorgänge und Daten mit Alltop zu verwalten , mit viel komplexem Code zu interagieren. Obwohl die Box, ist sie nur verbal voll. Wenn Sie komplexen Code benötigen, können Sie ihn ziemlich einfach erweitern. Aber sofort war es ziemlich zuverlässig und leistungsstark für Sie. Und meine Bedürfnisse werden natürlich, wie immer gesagt, die Geschäftsregeln aller unterschiedlich sein. Wissen Sie, wie es sich auf das bezieht, was wir getan haben, im Vergleich welcher Identität uns erlauben wird, mit Identität zu tun. Wir müssten nicht alle Ansprüche manuell schreiben und all das aufbauen. Die Sache ist, dass wir das getan haben, wo wir unsere eigenen Benutzeransprüche und die Hauptidentität aufgebaut und dann das Cookie-Money Valley erstellt haben. Das wäre wahrscheinlich praktischer, wenn Sie sich mit einer Anwendung befassen , die sich auf die Authentifizierung von Drittanbietern verlassen muss. Und dann gibt es einfach die Informationen weiter, dann können wir unser Geld für Benutzeransprüche aufbauen, während sie verkauft werden. Wenn wir es mit JWT oder dem Dritten zu tun haben , müssten wir das am Ende alles tun. Wir werden uns später im Kurs ähnliche Szenarien ansehen. Also, wissen Sie, wir machen uns nur in Gang, um zu sehen, dass sich der gesamte ASP.Net Core mit Authentifizierung und Autorisierung befasst. Also kleine Schritte, Muttern und Bolzen. Aber auf dieser Ebene sehen wir, wie wir es manuell machen können. Was wir hier tun werden, ist ein neues Projekt zu erstellen. Jetzt ist das eher wie ein Show-and-Tell. Du kannst folgen, was ich mache. Dies ist jedoch optional, da wir unsere ersten Kleinanzeigen-Websites weiterhin nutzen werden. Aber hier zeige ich Ihnen, wie Sie Authentifizierung, Autorisierung und all diese Dinge von Anfang an in das Projekt einbauen können . Wenn Sie also ein neues Projekt erstellen und sich für Ihr SBA.NET Core-Webprojekt entscheiden, funktioniert wieder ein neues, was ist das Web oder der MVC? Beide werden ein VCs haben und hier irgendwo in der Liste aufgeführt, aber sie verwenden die Rasiermesserseiten oder den MVC, den es gibt. Es wäre das gleiche Prinzip. Wisse, wann du rübergehst, gibst du es und ich gebe ihm einfach den Namen einfach auth auf. Und klicken Sie auf diesem Grün auf Weiter, Sie haben die Möglichkeit, den Authentifizierungstyp zu ändern. Kleinanzeigen, die wissen müssen, sind also nicht selektiv und standardmäßig nicht, leider nicht. Aber wenn Sie dann individualistische Kegel sagen würden, dann würde es automatisch bestimmte Dinge für Sie gerüstet , die die Identität aus der Box erleichtern, sind Authentifizierung, Autorisierung und all diese Dinge aus dem Karton. Sie würden auch feststellen, dass Sie alle Optionen haben, Sie haben die Identitätsplattform. Es lohnt sich schon früh, darüber zu sprechen, Autorisierung Dritter mit Microsoft oder Facebook oder Google usw. mit diesem Autoboxing hinzuzufügen , Autorisierung Dritter mit Microsoft oder Facebook oder Google , das das Microsoft-unterstützt. Und dann haben wir Fenster, die eher aussehen würden, wenn Sie Active Directory verwenden. Und Ihre Benutzer mussten sich authentifizieren, indem sie sich einfach im Netzwerk befinden. Das wäre also ein Thema für einen anderen Kurs oder später. So können wir individualistische Kegel sehen. Und dann fahren wir einfach weiter und klicken auf Create. Sobald dieses Projekt erstellt wurde, können wir einige zusätzliche Dinge in dieser Vorlage zur Kenntnis nehmen , die nicht in unseren Klassifikatorvorlagen enthalten sind, oder? Also werde ich sie irgendwie Seite an Seite haben, damit du sehen kannst, was ich meine. In Bezug auf die Daten haben wir einen Datenordner. Wenn Sie keine Identität einschließen, erhalten Sie diesen Datenordner nicht direkt. diesen Datenordner kennen, haben Sie automatisch Migrationen und Anwendungs-DVI-Kontexte. Also habe ich ein Datenprojekt, in dem ich diese Dinge irgendwie eingebaut hätte, oder? Wir haben also Migrationen, wir haben die Anwendungs-DB-Kontexte. Klar. Aber wenn Sie sich in dieser Anwendung DVI-Kontexte ansehen, werden Sie einige Dinge bemerken, die unterschiedlich sind. Ein verschraubter. Es erbt von Identitäts-DVI-Kontexten im Gegensatz zu dem, den wir haben, nämlich nur DVI-Kontexte. DVI-Kontexte geben ihm also eine Verbindung zum Entity Framework Core. Das ist in Ordnung. Okay, lässt es wissen, dass dies das Datenbank-Entity Framework ist. Kern ist das, was wir verwenden. Blablabla, wer auch immer Identitäts-DVI-Kontexte hat, erweitert DVI-Kontexte und fügt die identitätsbezogenen Tabellen hinzu, altlos. Identitätsbezogene Tabellen, die wir in einigen einigen sehen werden, enthalten also die wir in einigen einigen sehen werden, Tabellen zum Speichern von Rollen, Informationen zu Zeilen, Entschuldigung, Informationen über Benutzer, Ansprüche all diese Dinge. Alle diese Tabellen werden neben der Datenbank generiert , sobald wir diese Anwendung verwenden, VB-Kontexte. Ordnung, keine Identitäts-DB-Kontexte können erweitert werden, da Sie unterschiedliche Überladungen haben In Ordnung, keine Identitäts-DB-Kontexte können erweitert werden, da Sie unterschiedliche Überladungen haben, sind verschiedene Dinge, die Sie wie eine benutzerdefinierte Klasse für den Benutzer, eine benutzerdefinierte königliche Klasse und einen benutzerdefinierten Schlüssel einfügen können die Sie wie eine benutzerdefinierte Klasse für den Benutzer, eine benutzerdefinierte königliche Klasse und einen benutzerdefinierten Schlüssel einfügen . In der Box haben wir Identitätsbenutzer. Dieser Klassenidentitätsbenutzer repräsentiert diese Rot-Head-Entität. Benutzer präsentiert die Standardbenutzerklasse, die mit Identitäten geliefert wird. Verwenden Sie also Steuerlose und fügen Sie eine Anweisung hinzu, oder? Sie haben eine Identitätsrolle, die auch in Bezug auf Identität außer Kraft ist, wirklich selbst. Und dann bedeutet der Schlüssel hier, welchen Datentyp sollte ich verwenden, um den Schlüsselwert zu generieren? Also in einigen Fällen, oder standardmäßig eher mit String, oder? Es hätte also standardmäßig gute Werte als Schlüssel für diese beiden Tabellen. Aber was ist, wenn Sie ganze Zahlen verwenden möchten, dann können Sie sich entscheiden, zu int. Sie würden also die DVI-Kontexte mitteilen und es gibt ein paar andere Konfigurationen, die sie auf dem Weg einsetzen müssen. Aber sobald Sie diesen Datentyp ändern möchten, können Sie dies tun. Ihre Flexibilität zu zeigen ist, aber sobald ich aus der Box komme, wird es eine Zeichenfolge sein. Ich habe nicht bemerkt, dass es aufhören wird, fertig zu werden. Also versuche ich, sie alle auf Anpassungen zu reduzieren. Wenn wir diesen Standardwert belassen, wird es sich nicht beschweren. Und selbst wenn wir es nicht mit all dem qualifiziert haben, sind das sowieso die Standardwerte, in der Startpunkt-CSS-Datei werden Sie auch sehen, sind das sowieso die Standardwerte, in der Startpunkt-CSS-Datei werden Sie auch sehen, dass das alles tatsächlich aus der Box kommt. Ohne eine Identität hinzuzufügen, wäre das alles gewesen, was wir in der Adresse in der Startdatei gesehen haben, oder? Also musste ich das tatsächlich manuell mit unserem Startup hinzufügen. Dies wurde manuell hinzugefügt. Aber dann sehen Sie hier drüben sofort, dass wir den DB-Kontext mit einer Standardverbindungszeichenfolge erhalten haben. Und es fügt auch die Standardidentität mit einigen Optionen hinzu und teilt dessen Verwendung Entity Framework als Stores mit. Alles klar, also ändere ich definitiv die Box. All diese Dinge sind irgendwie verdrahtet. Eine andere Sache, die wir zur Kenntnis nehmen können, ist im Migrationsordner, im Datenordner werden wir sehen, dass wir mit einer Migration aus dem Feld kommen. Und diese Migration erstellt alle Tabellen, die für die Identität erforderlich sind. Also ISBN-Integrale, Dort werden die Regeln gespeichert. Sbi-Net-Nutzer. Sehen Sie, dass es mit all diesen Spalten aus der Box kommt. Nein, die Klasse, die ich gezeigt hatte, weiß nur, welcher Identitätsbenutzer ist. Diese Klasse bietet automatischen Zugriff auf alles, was in dieser AT-User-Tabelle enthalten ist. Standardmäßig wird jedes Identitätsbenutzerobjekt Eigenschaften haben. Ich kontrolliere nur, um zu sehen, ob ich hineinkomme, siehe die Definition dieser Klasse. Und da sind wir los. Ich kontrolliere einfach den Klick. Lassen Sie mich einfach zurückgehen und Ihnen zeigen, klicken Sie einfach bei gedrückter Ctrl-Taste Entitätsbenutzer hinzufügen und klicken Sie dann auf Identitätsbenutzer relativ zur Zeichenfolge steuern. Und das ermöglicht es uns, alle Felder zu sehen, die es gibt. Dies sind also alles Felder IDE und normalisieren E-Mail, Benutzername, Passwort, Passwort, Hash. Alle diese Felder entsprechen der Tabelle für die ASP NET-Benutzer. Sie müssen also keinen übermäßigen Code schreiben, um auf diese Felder zugreifen zu können. Andere Tabellen enthalten Rollenansprüche. Wir haben also eine Vorstellung davon, was Ansprüche sind. Wir wissen nicht unbedingt, welche Regeln es gibt, zumindest nicht im großen Schema der Dinge. Aber im Grunde können Sie Ansprüche durch Regeln abtreten, auch Benutzeransprüche, wir wissen, was das sind. Sie können diese also tatsächlich in der Datenbank speichern, anstatt sie manuell zu erstellen. Wenn sich eine Person anmeldet, wird sie in der Datenbank gespeichert und automatisch in ein Cookie geladen , nachdem sich der Benutzer authentifiziert hat. Red, wir haben ISBN beim Benutzer-Login. Dieser kann also die Drittanbieter verfolgen, die Benutzer möglicherweise verwenden, oder die damit verbundenen Kegel, die sie möglicherweise für den Zugriff auf Ihre Website verwenden. Wir haben Peanuts-Benutzerrollen. Das heißt also Wer sind die Benutzer, wie lauten die Regeln und welche Regeln haben diese ISAF dann? Es ist also wie eine Viele-zu-Viele-Linker-Tabelle zwischen der Benutzertabelle und der Rollentabelle. Tolkiens, das ist, wenn wir Referenz-Tolkiens verwenden, die wir uns später ansehen werden. Also zeige ich dir das nur aus der Box und hol all diese Tische. Du musst es nicht Schnee bauen. Erneut, wenn Sie bereits über Ihren Benutzerspeicher verfügen oder bereits Ihre eigene Authentifizierung durchführen, Sie aber erweitern möchten, um Identität zu verwenden, um diese Identitäten sehr flexibel und erweiterbar zu handhaben und verwendet werden können. Dabei, aber das liegt außerhalb des Umfangs dieses Kurses, da wir versuchen, die Grundlagen zu verstehen , die erforderlich sind, um die Authentifizierung in unsere Anwendung hier zu erhalten. In Ordnung, wenn wir zurückkommen, werden wir unserer bestehenden Anwendung die Authentifizierung unserer ordnungsgemäßen Authentifizierung, unserer Identität hinzufügen . Also Alltop die Box, wir hätten einfach sagen können, nun, tut mir leid, lass mich zur Datei settings.js in der App springen. Diese Datenbank wäre also so genannt worden, oder? Also die ganze Box, lass mich das einfach machen und wir können zur nächsten Lektion gehen. Wenn ich sage, dass die Bindestrichendatenbank aktualisieren wird, wird dies tatsächlich die Migration generieren lassen die mit der Datenbank oder der Migration verknüpft ist, die eher aus dem Feld kam. Und wenn wir dann diese Datenbank bekommen, und sobald das erledigt ist, kann ich jetzt auf alle Tabellen zugreifen, die wir gerade in der Migrationsdatei gesehen haben, oder? Wenn ich diese Anwendung ausführen sollte, dann sehen Sie, dass wir die gleiche Boilerplate bekommen und sofort verfügbar sind, wir erhalten ein Register- und Login-Links. Also habe ich diese dieses Mal nicht erstellt. Wir haben es manuell mit einer Klassifizierung gemacht, aber hier sind sie. Und wenn ich auf Registrieren klicke, siehst du, dass wir es nicht tun, aber was registriere ich die Seite richtig. Erstellen Sie unsere Kegel, senden Sie eine E-Mail ein, geben Sie ein Passwort ein, bestätigen Sie das Passwort. Wenn ich mich einlogge, siehst du, dass wir uns angemeldet haben. Und dann lässt es uns wissen, wie wir wahrscheinlich ein Boot fahren können, externe Anmeldemonitore oder Authentifizierungsdienste, wie wir uns angesehen haben. Also zeige ich dir das nur. Ja, das ganze Geld haben wir wild gemacht. Wir wollten nur sehen, wie alles verkabelt ist. Null. Wir wissen, wie man es sofort macht, wenn ich mich richtig registriere, nein. Und ich wähle einfach ein sicheres Passwort, das wir vorgeschlagen haben, wenn ich das Register mache, das tatsächlich in die Datenbank geht. Richtig. Und alles vor dieser Klage werden wie wir es tun, zusätzlich zu einer Datenbank, in der Benutzer gespeichert werden, klassifiziert, weshalb wir noch keine Registrierung haben. Aber ich kann ein Exterieur einfügen, also schauen wir uns an, wie man tatsächlich eine E-Mail sendet, aber sie simulieren diesen E-Mail-Workflow genau dort. Und wenn ich mich dann außerhalb des Browsers wieder anmelde und mich an das Zeug erinnere, denn das ist wirklich kein Identitätsmerkmal. Wenn ich jedoch zur Benutzertabelle springe und Daten ansehe, werden Sie sehen, dass dieser Benutzer nicht gespeichert ist. Und so sieht diese Rolle aus. Und sieh dir das Passwort an. Denken Sie also daran, dass wir bei der Einrichtung eines eigenen Kennworts ein Nur-Text-Passwort verwenden , das ist natürlich ein Tabu in der Datenbank. Es würde automatisch mit freundlicher Genehmigung unseres Identitätsdienstes gehasht. Dies ist also ein sehr leistungsfähiges Werkzeug und wir werden viel Spaß daran haben, uns die Notizen und die Schüssel anzusehen, also ist alles eingerichtet und wie wir unsere Sicherheit mit Microsofts Funktionen maximieren können . Also funktioniert nur ein weiterer Test-Login. Da sind wir los. Also genau das, was wir getan haben, all das. Ich habe jedoch keinen Code geschrieben, der eingeblendet wurde, und ich habe bereits ein voll funktionsfähiges Anmeldesystem, das bereits sicher ist, da mein Passwort gedämpft wird und ich problemlos überall mit dem Hinzufügen von Autorisierung beginnen kann. Und es wird funktionieren. Also kein Zurück, wir werden uns ansehen, wie wenn wir unsere Projekte bereits erstellt haben, heilig, dieses Feature in dieses Projekt integrieren. 9. Identity in den bestehenden Projekt hinzufügen: Alles klar Leute, also jetzt, da wir aus dem Tellerrand wissen, was wir mit dieser Entität bekommen und wir haben ein besseres Verständnis dafür, wie es funktioniert. Beginnen wir mit der Nachrüstung unserer Anwendung, um Bibliotheken zu nutzen, die uns zur Verfügung stehen. Einige dieser Dinge schiele ich nur und leihe mir buchstäblich aus dem, was mit dem Eid des Box-Score erzeugt wurde , wenn wir diese Entität von Anfang an aktiviert hätten Natürlich werde ich erklären, was passiert, während wir weitermachen, damit wir verstehen was ist jede Zeile, vier, oder? Wir haben also bereits unseren DB-Kontext und wir wissen, dass wir unsere Datenbankverbindung verwenden, das ist in Ordnung. Was wir jedoch hinzufügen müssen, ist das Identitäts-Tool, diesen gesamten Bereich. Also gehe ich zum DB-Kontext und lasse es wissen, dass ich nicht mehr möchte, dass du nur den DB-Kontext verwendest und Identity DB-Kontexte verwenden wollte. Denken Sie also daran, dass Identitäts-DVI-Kontexte uns die Möglichkeit bieten, die gesamte Box zu verwenden, die verschiedenen Tabellen, die wir bekommen können. Also werde ich einfach weitermachen und einbeziehen dass das Paket ein Kernidentitätspunkt ist EF Core. Und ich habe es herausfinden lassen, dass der neueste Bucket installiert wird. Und sobald diese Sünde alle roten Linsen erscheinen und alles sieht aus wie zuvor. Nett und einfach, oder? Also nein, wir haben automatisch Zugriff auf diese Tabellen. Momentan müssen wir in der Startklasse wissen lassen, dass wir die Standardidentität verwenden möchten. Wir werden also sehen, dass die Standardidentität der Dienste und alle, die Sie verwenden können, verschiedene Klassen haben. Die Azure AD Identity, Identity Core und Sie haben auch eine Standardidentität. Der Unterschied zwischen ihnen besteht also darin, dass wenn Sie sagen, dass „ Standardidentität hinzufügen “ alle Standardeinstellungen bedeutet, bitte legen Sie sie dort hin. Sie können sehr detailliert werden und sagen, Identität hinzufügen, und dann fügen Sie hinzu, was Sie wollen, und Sie werden eine Weile gehen, die Sie nicht wollen. Und ehrlich gesagt denke ich, dass das viel mehr Arbeit ist, die geschehen muss. Ich verstehe, warum es enthalten war, aber der Einfachheit halber, und ehrlich gesagt viel von der Box, es ist variabel voll. Ich behalte nur die Standardwerte. Also werde ich sagen, Standardidentität hinzufügen und wir verwenden Identitätsbenutzer. Denken Sie also daran, dass wir uns angesehen haben, dass diese Entität als Standardbenutzerklasse verwendet wird , die die Benutzertabelle darstellt. Nun danach wollen wir wie einige Optionen haben. So können Sie Optionen hinzufügen, um zu sehen, wie wir mit dem Passwort umgehen möchten. Also wollen wir uns mit den Anmeldeanforderungen auseinandersetzen, oder? Also kann ich diesen Lambda-Ausdruck einfach einsetzen. Und lassen Sie mich das tatsächlich in ein Objekt einfügen, da wir mehrere Optionen für einen Objektblock haben können . Und dann kann ich anfangen, Adoptionen zu fischen. Aber vorher möchte ich dieses Problem lösen, also brauche ich eine Bibliothek und danke, dass ich es durch den Kontrollpunkt bekomme. Das ist also in Ordnung. Was ich tun werde, ist zu unserem NuGet-Paketmanager zu springen und ich suche nach Microsoft.NET-Punkt Microsoft ASP NET Core Identity Wi. Okay, das ist es, was uns die Standardwerte gibt, sind Razor-Seiten integrierte Benutzeroberfläche für das Chlorid Entity Framework. Wie ich schon sagte, wenn wir Standardidentität hinzufügen, gibt es bestimmte Dinge, die für uns einfach aus dem Tellerrand kommen. Die Benutzeroberfläche ist also eine von denen. Also werde ich einfach weitermachen und diese Version holen. Und ich gehe nur zur CSS-Datei, nur um sicherzustellen, dass sie nicht hinzugefügt wird. Nun eine Sache zu 0 bis l m hier, und das war die vielen Frustrationen in früheren Kursen und sogar in meiner Arbeit. Wenn die Versionen hier nicht viel machen, erhalten Sie möglicherweise Fehler bei unerklärlichen Fehlern. Mit Gerüsten. Gerüstbau generiert Dateien oder generiert Ansichten. Ansichten in den automatischen Mechanismen von Visual Studio und dem Framework. Wenn diese Versionen jedoch zwischen den Authentifizierungsbibliotheken und den Entity Framework-Bibliotheken liegen, werden Sie auf Probleme stoßen, oder? Manchmal haben Sie vielleicht 0,09 oder zumindest zum Zeitpunkt dieser Aufnahme, Punkt 0100 ist elitär, oder? Aber wenn Sie eine haben, die nicht 0.10.9 ist, könnte das eine Nischen verursachen. Wenn wir also da sind, wenn wir eine Klimaanlage haben, reparieren wir es. Im Allgemeinen bezieht es sich jedoch auf alles, Authentifizierung oder Entity Framework zu tun hat. Alle von ihnen müssen die gleichen Versionen haben. In Ordnung, also dieser Informationspunkt genau hier. Jetzt können wir bestätigen, dass unsere neue Bibliothek hinzugefügt wird, wenn wir wieder zu unserem Startup springen und wir sehen, dass unser Fehler ist. Erscheint und das ist gut. Okay, entferne das früher. Ich entschuldige mich. So sollte Ihre Linie aussehen, oder? Das ist also spontan, also welche Möglichkeiten haben wir? Wir haben also PaaS oder Adoptionen für Anmeldeoptionen, Benutzeroptionen für das Passwort. Wir können angeben, dass wir eine Ziffer benötigen möchten. Also ja, wir wollen eine Ziffer benötigen, richtig? Also können wir die Bar-Passwort-Zeichenfolge genau hier festlegen, und das wird global sein. Wie viele Charaktere wollen wir? Minimum will vielleicht 7 oder 7, denke ich ist ein Standard. einmal unterscheiden sich die Geschäftsregeln. Wir benötigen Kleinbuchstaben. Benötigen wir nicht alphanumerisch? Benötigen wir Großbuchstaben? All diese Dinge? Auch wenn wir diese Optionen nicht über die gesamte Box angeben , benötigen Sie Großbuchstaben. Sie benötigen ein Sonderzeichen und Sie benötigen diese Ziffer. Und das Passwort muss minimal sein. Ich denke, acht Charaktere, das ist alles von der Box. Selbst ohne körnig zu werden, wie das, was wir hier machen, wären es ihre Boote aus der Box, oder? Also werde ich dir nur zeigen, dass all diese Großbuchstaben erfordern. Und ich denke, es ist nicht alphanumerisch erforderlich, wahr. Alles klar. Also sage ich der Kiste, dass du das bekommst. Und obwohl eine Option, die sich als nützlich erweisen könnte, die Möglichkeit wäre Anmeldung eine Bestätigung zu verlangen. Also Optionen, die sich anmelden mussten Ich bin zur Bestätigung gegangen. Wenn Sie den Mauszeiger bewegen, wird Ihnen mitgeteilt, dass es dieses Flag hat, das bestätigt ist oder nicht. Sie wissen also, wie wenn Sie sich für unsere Websites anmelden und sie sagen, dass Sie Wunder bestätigen, bevor es einziehen kann, bis Sie dies tun, können Sie nicht auf die Website zugreifen oder das bringt dies auf den Tisch. Also werden wir diesen E-Mail-Mechanismus einführen, um die E-Mail zu senden, sobald sich eine Person bei der Anwendung registriert hat. all dies tun, werden wir uns noch eine Sache ansehen, bevor wir eine Migration durchführen und dann die Tabellen abreißen oder vielmehr generieren. Und das erweitert Identitätsbenutzer. Also haben wir die Spalten gesehen und wenn Sie noch einmal wissen möchten, welche Spalten es gibt, können Sie einfach F 12 drücken oder bei gedrückter Ctrl-Taste und dann wieder F2 drücken, und dann sehen Sie, was die Spalten sind. Nun, Sie werden feststellen, dass dies Standardwerte sind. Es gibt nichts Schreckliches bei FirstName, LastName, wissen, nichts Persönliches, nichts persönliche Informationen. Pebble den Benutzer. Im Allgemeinen möchten Sie sie speichern, was auch immer Sie für speicherfähig sind. Das bedeutet, dass wir diese Identitätsbenutzer-Tabelle erweitern müssten, um mehr Dinge zu speichern. Was Sie also am Ende tun würden, ist vielleicht eine neue Entität zu schaffen. Und ich werde nur eine neue Klasse in der Entity Stable sagen. Du könntest speichern, du könntest eine Klasse namens „Alles“ erstellen. Jemand wird im Allgemeinen sagen, dass der Anwendungsbenutzer verwendet wird, Sie können ihn gegen einen Firmenbenutzer verwenden. Manchmal hat man verschiedene Arten von Benutzern mit unterschiedlichen Feldern, oder? Vielleicht hat ein Manager andere Informationspunkte als unser regulärer Benutzer usw. Es kommt also darauf an, oder? Lehrer des School of Management Systems, Schüler wie früher, sind alle Benutzer, aber mit unterschiedlichen Datenpunkten, aber letztendlich möchten Sie sie alle in derselben Tabelle. Was man hier mit dieser einen Klasse durchmachen kann , könnte es auf viele andere Klassen anwenden. Also wenn ich gerade Benutzer gesagt hätte, und das ist offensichtlich meine benutzerdefinierte Benutzerklasse. Und um dann öffentlicher Benutzer zu sagen, kann ich wissen, dass er von Identitätsbenutzern erben wird. Sie also nacheinander vom Erben Sie also nacheinander vom Identitätsbenutzer. Es geht automatisch von allen Feldern aus , die der Identitätsbenutzer verfügbar hatte. Dann kann ich noch mehr hinzufügen. Was wäre, wenn ich sagen wollte, füge eine neue Eigenschaft von wenig Zeit hinzu, um meine Rechtschreibung richtig zu machen. Und das wäre Geburtsdatum. Alles klar. Ich möchte also, dass mein Mitarbeiter oder meine Nutzer mir ihr Geburtsdatum mitteilen. Was ist, wenn ich Vor- und Nachnamen wollte? Das wird also eine Zeichenfolge sein, firstName und String also name. In Ordnung, was auch immer ich will, ich bin wie gesagt, du kannst mehrere Benutzer haben, also ist das C, der Pfahl Erwachsener, benutze einfach viel, wenn wir einen Lehrer und Schüler des Schulmanagementsystems hätten , oder? Also hätte ein Student wahrscheinlich gerne ein Date eingeschrieben, unterrichtet, ich wäre tagsüber müde und so weiter. Die verschiedenen Datenpunkte würden sich also auf die verschiedenen Benutzer beziehen. Das ist ein Thema für einen anderen Kurs, obwohl dies wieder eine Art Erweiterungssache ist , die im Setup etwas mehr Finesse erfordern würde. Also zufällig, werde es einfach halten und einfach meine benutzerdefinierte Benutzerklasse haben, die die benutzerdefinierten Felder enthält. Sobald ich diesen benutzerdefinierten Benutzer nach dem DB-Kontext verwenden möchte, wissen Sie, dass Sie den Standard-Identitätsbenutzer nicht verwenden. Denken Sie also daran, wenn wir uns das vorherige Projekt ansehen, könnten wir hierher kommen und es dem Identitätsbenutzer mitteilen. Aber standardmäßig weiß es von diesem Entitätsbenutzer, den ich den Benutzer verwenden wollte. also Identitäts-DVI-Kontexte im Verhältnis zum Benutzer besuchen, wird es wissen, die Benutzerdatei als Bezugspunkt betrachtet wird , der dass die Benutzerdatei als Bezugspunkt betrachtet wird , der diese Entitätsbenutzer klebt. Und dann etwas, oder? Wenn ich diese Vererbung nicht hätte, würde ich hier einen Fehler bekommen. Weil der Identity DB-Kontext etwas vom Typ Identitätsbenutzer erwartet, oder? Deshalb siehst du diesen Fehler dort. Sie müssen also sicherstellen, dass diese Vererbung stattfindet. Das war's also. Wir werden es als etwas außerhalb des Typs sehen, nach dem es sucht. So würden Sie also im Grunde ein benutzerdefiniertes, unsere benutzerdefinierten Felder zur Benutzertabelle hinzufügen . Sie möchten jedoch nicht unbedingt Felder entfernen , wenn Sie die Feld-Hilfe nicht verwenden oder die Felder verwenden. Aber jedes Feld, das dort eingesetzt wird, ist für einen bestimmten Zweck, oder? Am Ende des Tages denke ich, dass dies für den Moment genug Konfiguration ist, lassen Sie uns überspringen und eine neue Migration hinzufügen. Wenn wir also unsere Migrationssachen machen, müssen wir Migration sehen. Identitäten hinzugefügt. Tabellen, geben Sie uns die Rechtschreibung oder? Dann zu den Tischen. Und dann natürlich nach ändern Sie die Standardprojekte, die weitergehen und generieren. In Ordnung, also bekomme ich hier einen sehr fiesen Fehler. Und wenn Sie einen meiner Kurse absolviert haben, scheue ich mich nicht vor Aras. Ich zeige dir die Fehler, also denke ich, dass wir die Konfiguration verpassen. Und ich habe absolut Recht. Lassen Sie mich das also korrigieren. So können wir hier sehen, dass wir den Datenspeicher verwenden müssen, also habe ich diesen Schritt verpasst. Nachdem wir also die Standardidentität hinzugefügt und alle Optionen eingerichtet haben, müssen wir add sagen. Standardwerte sind ungerade Entity Framework-Store, daher weiß er, dass er im Anwendungs-DB-Kontext verwendet werden sollte, um diese Tabellen zu speichern. Also denke ich, dass der Pfeil es war zu sehen, dass ich sehr verwirrt bin. Rant Nulla. Ich weiß, dass ich Identität sein sollte. Ich weiß, dass ich irgendwo sein sollte, aber ich weiß nicht, wo ich mein stilllegen soll, Fred. Und während wir hier sind, ist eine weitere wichtige Änderung, die wir berücksichtigen müssen, dass wir wissen müssen alles in die Kontexte unserer Kostenbenutzerklasse ändern müssen, oder? Wir können also hier keinen Identitätsbenutzer verwenden, sondern für BB-Kontexte gedacht, diese Identitäten sind so, dass alles irgendwie einheitlich sein muss. Also benutzer und füge einfach die using-Anweisung hinzu. Denn nirgends alles im Rahmen unserer Kosten für die Benutzerklasse tun. Nun, nachdem sie diese Suchi gemacht haben und tritt das wieder auf die Werbemigration ein? Und dieses Mal bekomme ich einen brandneuen Fehler. Es sagt mir also, dass die Nicht-Modellerstellung ein Problem hat. Also bringe ich es noch einmal durch alle Bewegungen, weil man manchmal einen Schritt verpasst und es einen Welleneffekt auf den Fehler hat, der Ihnen nicht unbedingt sagt, was das Problem ist, oder? Dies wird also normalerweise gesehen, dass eine der Tabellen einen Primärschlüssel benötigt, etwas, etwas, was jedoch mit dem DB-Kontext zu tun hat. Und was wir nicht gemacht haben, war die Basis für das Erstellen von Molal für den ModelBuilder auszuführen. Okay, also das ist im Grunde nur Gewalt zu sehen. Was wird am Strand einsteigen, noch bevor Sie anfangen, das zu tun, was bei der Implementierung passieren soll, oder? Also dass eine Zeile unbedingt erforderlich ist, um die Ahne was ist Identität, oder? Es war also nicht vorher, es ist null. Also zeige ich Ihnen nur all die kleinen Nuancen, die dazu gehören, einem bestehenden Projekt Identität zu verleihen. Wenn wir es also noch einmal versuchen, haben wir Erfolg. Alles klar, habe ein paar Versuche gemacht, aber wir haben gesehen, was auf dem Weg schief gehen kann. Und jedes Mal, wenn wir dies tun, sollte es eine Lernerfahrung sein, damit wir verstehen können, was passiert. Also nein, wir sehen, dass wir eine Migration haben, die dieselben Tabellensätze hervorbringt , die wir gerade in der Box-Migrationsdatei gesehen haben. Aber wir wissen, dass wir benutzerdefinierte Spalten in unseren ASP NET-Benutzern haben. Wir haben Geburtsdaten, FirstName, LastName sowie alles andere, was mit diesem Entitätsbenutzer nicht mehr in der Box gewesen wäre. In Ordnung, so können wir unseren Tabellen neue Felder hinzufügen. Alles, was wir tun müssen, ist eine neue Klasse zu erstellen. Machen Sie weiter und verlängern Sie, welche Klasse auch immer ist. In diesem Fall waren es also ASP NET-Benutzer. Manchmal möchten Sie vielleicht etwas Extra für die Rollentabelle, die versucht, die Zeilen zu finden, die sich oben rechts befand. Wir haben also nur den Namen, den normalisierten Namen auf diesem gleichzeitigen System. Manchmal möchten Sie dies aus irgendeinem Grund erweitern, das dasselbe Prinzip sein wird. Geh einfach weiter und verlängerst es. Und dann könnten Sie beim Start eine Standardidentität mit den verschiedenen Typen angeben. Eigentlich wäre es hier, wenn wir die benutzerdefinierten Regeln hinzufügen würden. wäre es also nicht. Basierend auf der Art der hier verwendeten Bibliothek oder der Diensterweiterungsmethode verwenden Sie hier. Du könntest es hinzufügen. Sie können in diesem Fall möglicherweise nicht dort sein, wo es sich befindet. Wenn wir den ide-Identitätskern verwenden, hätten wir ihn erweitern können, um Benutzerkomma, Kunde oder mit AD-Standardidentität anzuzeigen . Sie müssten ein Nebenbild sehen und ihm dann den neuen Rollentyp geben , den Sie in dieser Einstellung verwenden möchten. In Ordnung, das sind also die kleinen Nuancen wir weitermachen und wie alles geregelt wird. Aber letztendlich haben wir unser Gerüst gemacht, tut uns leid, unsere Migration, nein, lassen Sie uns die Datenbank aktualisieren. Und das ist erledigt. Die einfache Datenbank unserer eigenen, in der nur Verschlusssachen gespeichert wurden, ist null wird erweitert, sobald FA, da wir los sind. Und wir werden sehen, dass wir all diese Tabellen haben, wie wir aus unserem vorherigen Projekt gesehen haben. Wissen Sie also, was wir tun müssen, ist die Verkabelung abzuschließen, um die Registrierungsseite auf der Anmeldeseite zu all den funktionierenden Dingen zu erhalten. 10. Sichere: Alles klar Leute. Als wir das letzte Mal hier waren, waren wir gerade dabei, unsere Identitätstabellen einzurichten, in denen sie sie abgewickelt in einer Datenbank generiert wurden. Jetzt müssen wir die Anwendung auf Null Hole einrichten, um mit der Datenbank für eine Verteilung zu Anmeldezwecken zu interagieren. Was wir also tun werden, ist zu prüfen, wie am Wochenende ein sicherer Vertriebsprozess ist. Und all die Dinge sind Nuancen, die wir berücksichtigen müssen. Also werde ich in der Startdatei , nur um zu beginnen diese Add-Authentifizierung entfernen, nur um zu beginnen, weil ich sie nicht mehr brauche. Ich muss nicht manuell angeben, dass ich ein Cookie und Crito verrückt hinzufüge , da die Identität das Cookie tatsächlich automatisch erstellt. In Ordnung? Also kann ich das alles einfach entfernen. Und wir können von hier aus anfangen. Stimmt's? Zweitens brauche ich nicht das Sonderangebot oder das benutzerdefinierte Angebot, das wir erstellt haben, aber ich bin noch nicht linear mit ihnen. Davor möchte ich, dass wir sehen, wie wir ein Register erstellen können. Die Altersgruppen sind eher registrierter Zeitraum. Das ist seine bereits verkabelte Verbindung, um in die Datenbank zu schauen und mit allen Daten zu interagieren, die geteilt werden. Dieser Prozess wird also Gerüst genannt. Ich habe viel Gerüste gesehen. Wenn wir also zu Seiten gehen und hinzufügen, können wir nach einem neuen abgefassten Gegenstand suchen. In einem neuen abgefassten Element sehen Sie eine Kategorie, die Identität angibt, und jeder kann darauf doppelklicken. Und es wird Ihre Bibliotheken scannen und sicherstellen, dass alles in Ordnung ist. Dann wird uns dieser Dialog vorgestellt, der besagt, was wollen wir tun? Also nochmal, weg durch die Kiste. Wir bekommen die Registrierungsseite, wir bekommen die Anmeldeseite. Wir bringen sie zum Zugriff über das Webinterface. physischen Dateien sind jedoch nicht vorhanden. Egal, ob Sie Identität manuell hinzufügen oder von Anfang an die Option zum Bearbeiten ausgewählt haben. Dieser Schritt ist erforderlich, wenn Sie Ihren Login oder Ihre Registrierungsseite anpassen oder einfach eine dieser Seiten hier und eine dieser Seiten hinzufügen müssen Ihren Login oder Ihre Registrierungsseite anpassen . Sie werden sehen, dass wir tatsächlich alle Dateien sehen können , weil sie tatsächlich da sind, aber physisch nicht zugänglich sind. Randall, ich werde jedoch nicht alles außer Kraft setzen. Ich bleibe einfach bei meinen Waffen und bin hier für die Registrierungsseite. Das ist also alles, womit ich mich wirklich beschäftigen möchte, oder? Null. Und sie werfen, wir können uns einloggen und abmelden und das Ensemble richtig bestätigen, ich bin nur für den Kegel da, um sich zu registrieren. Dann kann ich auswählen, dass ich meinen Datenkontext verwende. Und es kennt uns schon die Musik, nichts wird hier veranlasst, immer noch was auch immer. Und dann kann ich einfach auf Hinzufügen klicken. Und sobald dieser Gerüstprozess abgeschlossen ist, werden Sie feststellen, dass wir einen neuen Ordner namens Bereiche und Bereiche haben , in denen Identitäts- und Identitätsseiten und Seiten angezeigt werden. Du siehst diese Akten. Und in einem Kegel ist das, was auch immer wirklich will, das Register ist. So viele Dateien, wie Sie Gerüste gesteckt hätten, hätten sie ungeboten generiert, die entlang dieser vollständigen Struktur ebenfalls platziert werden, und es ist ein Read Me, das nicht wirklich braucht, richtig? Nein. Also nur ein kurzer Treibstoffstart der Tour. Es wird nur sagen, mit welcher Ladung Fei Li Yuan Sie tatsächlich schnell mehrere Ladungen haben können , denn jedes Mal, wenn Sie eine IRA oder ein neues Gebiet haben, können Sie sie haben. Verwenden Sie ein anderes Layout als die Risiken des Projekts, oder? Nun, wir sagen es soll die allgemeinen Layouts verwenden, die Ebene des freigegebenen Projekts zu finden sind, der Ebene der freigegebenen Seiten des Projekts. Wir haben Sichtimporte. Wir haben auch diese Art von Standards. Also stimmt alles, was die Standardseiten dort gewesen wäre. Es ist hier verfügbar. Das ist also alles von denen. Aber wenn wir uns die CSE-Demoseite des Registerpunkts ansehen, und im Allgemeinen, selbst wenn Sie eine MVC-Projektvorlage verwenden, die bereits ein Projekt verwendet hat, aber diese Seiten, die für Identitätszwecke abgefeuert aber diese Seiten, die für Identitätszwecke abgefeuert werden, sind im Allgemeinen Razor Seiten, wie auf CSS-HTML-Seiten, Razor-Seiten mit dem Code dahinter. Selbst wenn Sie zu diesem Zeitpunkt eine MVC-Anwendung verwenden, wo definitiv Armut betrifft, wird alles, was ich tun werde, das, was Sie erleben werden. Voller Halt. Die Registerseite gehört also zum Formular, richtig, New Yorker Kegel erstellen. Und wir haben alle Felder und die Sektion auf Booten, die externen Logins, all das ist da. Wenn du es behalten willst. Wenn nicht, können Sie diese Datei natürlich nach Ihren Wünschen ändern, innerhalb der Grenzen des Verbleibens funktionsfähig. Okay, also lass mich die ganze Umverteilung testen. Ich werde nicht zu sehr auf die ausführliche Erklärung eingehen , wie gerade alles verdrahtet ist, ich wollte nur sicherstellen, dass es funktioniert. Also wissen Sie in unserem Login-Teil, dass wir die Registrierungsseite haben. Ich werde ihm sagen, wo es zeigen soll. So wird diese URL enden oder nicht Anker-Tag, sondern wird am Ende in etwa so aussehen. Also Anker-Tag-Klasse nav Link, das ist B Pfeil ist Identität, oder? Das sind also die Ero-Identitäten. Der Name des Bereichs ist B-Dash-Bereich und eine SDS-PAGE ist ein Schrägstrich-Register. Dort möchte ich, dass es hin soll, wenn jemand zur Bewerbung kommt. Also melde dich an. Lassen Sie uns das also für einen Dreh machen. Also auf dieser Seite klicken wir auf Register, und los geht's. Wo auf der Registrierungsseite. Denken Sie daran, dass wir jede einzelne Sache in unserer App autorisiert hatten. Das bedeutet also einfach, dass der Eid der Massenhaut mit einer geringen anonymen Flut direkt darüber registriert wird. Stimmt's? Noch einmal werden wir auf die Details eingehen, was gerade hinter den Kulissen passiert. Ich wollte nur eindeutig testen. Also Admin-Test. Lass mich sehen, ob ich kann. Okay, also mein übliches Passwort ist P bei San ss WW schon wollen. Ich wollte jedoch ein schwaches Passwort eingeben und mal sehen, was passiert. Also werde ich einfach das Wort Test einlegen. Sie sehen hier, dass es zwischen sechs und maximal 100 Zeichen lang sein muss. Es findet also eine automatische Validierung statt. Nicht unbedingt wegen der Richtlinie, die wir eingeführt haben, sondern wegen des Lochs die Seite selbst, obwohl die Boxen entworfen wurden. Das ist also in Ordnung. Ich benutze einfach mein spezielles langes Schlagwort. Und dann das zweite Schlagwort am meisten. In Ordnung, also zeige ich Ihnen nur, was Sie aus der Box holen müssen , indem Sie einfach die Registrierungsseite generieren. All diese Regeln werden bereits für uns durchgesetzt. Wenn ich dann auf „Registrieren“ klicke, bringt uns alle als Adopt bestätigen Register 0 Seite, die ich erwähnt habe. Simulieren des Versands der E-Mail, um uns bei der Registrierung zu helfen. Also mach einfach weiter und bestätige Kegel. Aber wie das alles noch nicht getan wurde, lassen Sie uns zur Datenbank springen und sehen, ob es funktioniert hat. Also habe ich mich in der Datenbank gerade registriert, ich sollte wissen, dass ich in der Tabelle der ASP NET-Benutzer bin. Und wenn ich Daten für die Tabelle ansehe, sehen Sie hier Admin-Test-E-Mail. Mein Passwort wurde gedämpft. Das sieht also nicht so aus, dass das Passwort, das ich in San SS in P eingegeben habe, OID eins sein wird. Und sieh dir an, was wir haben. Oh, es ist aus der Box, oder? Ich bin auch ein bestätigter Benutzer. Dank der Simulation. Aber was bedeutet im Nordosten, Sie werden feststellen, dass wir die benutzerdefinierten Felder, Geburtsdatum, den vollständigen Namen und den Nachnamen haben. Alle davon sind leer. . Und es scheint, als hätte ich vielleicht den falschen Datentyp für den Nachnamen verwendet und das habe ich getan. Und ihr könnt mich korrigieren. Oh, das tut mir leid. Aber mein Punkt ist, dass das Register funktioniert. All das ist verkabelt. Wir haben sehr wenig getan, um es zum Laufen zu bringen, richtig. Was ich also tun werde, ist dies nur zu entfernen , weil ich den falschen Datentyp für den Nachnamen verwendet habe. Also werde ich das Feld einfach entfernen. Ich mache eine neue Migration und habe ein festes Nachnamenfeld angezeigt. Sie müssen das wahrscheinlich nicht tun, weil Sie meinen Fehler wahrscheinlich gesehen haben, bevor ich ihn gemacht habe. Wenn nicht, dann ist das in Ordnung. Ich mache das nur, damit ich sicherstellen kann, dass alles in Ordnung ist. Sie sehen hier, dass ich eine Änderung an der Benutzerklasse vorgenommen habe und Migration hinzugefügt habe. Es wird die Updates machen. Und dann kann ich einfach eine Update-Datenbank machen. Also wird es diesen Datentyp für mich entsprechend aktualisieren. Gut. Jetzt wissen wir, dass unsere Registrierungsseite funktioniert und das ist in Ordnung. Das ist also Schritt eins erledigt. Wenn wir wiederkommen, schauen wir uns eher ein Boot oder einen Vertriebsprozess an und sehen, auf welche andere Überlegungen zu achten ist. Also schauen wir uns gewonnen an, was der Code tatsächlich im macht, im Code hinter der Datei. Wie wir es erweitern können, um die zusätzlichen Felder, die wir hinzugefügt haben, tatsächlich zu unterstützen. Und wir werden ein vollständiges Verständnis dafür bekommen, was genau im Allgemeinen passiert. 11. Sichere: Hey Leute, willkommen zurück. Bevor wir mit dem Sunning fortfahren, alles über eine Registrierungsseite, wollte ich nur darauf hinweisen, dass Sie, wenn Sie eine MVC-Anwendung verwenden und es möglicherweise ein zusätzliches Thema gibt, das Sie tun müssen , um Ihre URL tatsächlich zu erhalten siehst du den pH-Wert in den Bereichen, oder? In der Startle, die standardmäßig angezeigt wird, wurde es auf Endpunkten gehabt und dann ist es Endpunkte über MAC-Controller. Und dann hast du die Straßen und alles. Sie müssen sicherstellen, dass Sie Endpunkte haben, einen Mopp, erhöhen Sie den pH-Wert ist ganz Seele. Wenn Sie also einen MVC nach oben verwenden, ist die Zeile, die Endpunkt-Dot-Controller-Root sagt. Und dann wird es als Vorlage angegeben, erstellt eine neue Zeile und legt Endpunkte nach oben Mop-Ergebnisseiten. Und eine andere Sache, die Sie tun möchten, ist sicherzustellen, dass Sie Dienste haben, die Arterien von Seiten. Sie werden also wahrscheinlich bereits Dienste haben. Der Controller wird verschmelzen, oder? Ja. Das ist wahrscheinlich das, was du hast, oder? Null. Sagen Sie, Sie wollten sicherstellen, dass Sie Razor-Seiten hatten. Das ist also die andere Herausforderung, für die Sie sich auf jeden Fall entscheiden müssen, um alles zum Laufen zu bringen. Wenn Sie also zuvor Schwierigkeiten hatten, sollten Sie es Ihnen gut gehen, wenn Sie zuvor Schwierigkeiten hatten. Das ist also das ernennt die Entzündung für MVC-Personen, die alle dort sind. Nein. Werfen wir einen Blick darauf, was mit unseren Registern passiert. Und so werde ich einfach alles schließen, was nicht mit der unmittelbaren Aktivität in unserem Register zu tun hat. Wir hatten festgestellt, dass es funktioniert. Wir haben auch festgestellt, dass nur nach der E-Mail, dem Passwort und der Bestätigung gefragt wird. Wisse, dass es eine Reihe von Dingen gibt, die wir in Betracht ziehen können. Erstens würden Sie feststellen, dass der Identitätsbenutzer standardmäßig das Feld „Benutzername“ hat. Es hat auch ein E-Mail-Adressfeld, aber wir fragen nur nach E-Mail. Wenn Sie sich den Benutzer ansehen, der nach unserer Registrierung erstellt wurde, Sie sehen, dass wir nur zwei sind. Oh, tut mir leid, ich habe es entfernt. Was hätten Sie diesen Benutzernamen und die E-Mail bemerkt, aber die gleichen Werte, oder? Oder um ihn wertvoll zu sehen, das vielleicht nicht unbedingt das, was Sie wollen. Manchmal sehen Sie auf unserer Website einen anderen Benutzernamen als die E-Mail-Adresse. Und alles ist irgendwie Lando anders und das ist in Ordnung. In diesem Stadium möchten wir jedoch sicherstellen , dass wir alle Felder auf der Registrierungsseite erfassen, die wir benötigen. Vielleicht ist also ein Geburtsdatum erforderlich. Vorname, LastName. Vielleicht unterscheidet sich der Benutzername von der E-Mail-Adresse des Passworts. Und dann siehst du hier Ja, für Nummer, richtig. Was auch immer Sie vom Benutzer benötigen, Sie können die Registrierung am Strand hinzufügen. Sagen wir also, dass ich eine E-Mail wollte. Ich wollte auch einen Benutzernamen. Sie sollten also mit ganzen Formularen vertraut sein oder Lochformulare funktionieren auf Razor-Seiten. Wenn Sie also das registrierte Modell haben und dann passiert, ist, dass wir dieses Objekt namens Künstler haben, andere Klasse namens Input, die die verschiedenen Felder speichern wird, nach denen wir fragen. Wir müssen also sicherstellen, dass diese Eingabeklasse alle Felder enthält, nach denen wir den Benutzer im Formular fragen. Aus diesem Grund sehen Sie, dass die EM-Beleuchtung verwendet wird, weil es nicht mehr nach der Verwendung gefragt wird. Es hat unsere Darstellung nicht aktiviert, außerhalb des Benutzernamens, aber das ist vorerst in Ordnung. Also werden wir verwenden und wir auch das Passwort. Und ich füge nur die zusätzlichen Felder für Vorname, Nachname und Geburtsdatum hinzu. In Ordnung, und für das Geburtsdatum werde ich angeben, dass der Typ Zeit ist, eher unsere Daten, damit wir dieses Farbfenster-Steuerelement standardmäßig erhalten. Im Grunde ist es das also. Das Ganze, das Sie die Felder erweitern möchten, die sich im Formular befinden. Dies ist Schritt eins. Sie werden die Felder darstellen, die Sie richtig haben möchten. Jetzt. Der nächste Schritt wäre, die Eingangsklasse versehentlich nachrüsten zu lassen, damit ich einfach den Klick steuern kann zu den Eingängen springt. So sehen wir hier Immobilien in beiden Modellen kaufen. Das bedeutet also, dass o-chem alle Daten, die in die entsprechenden Felder für das Eingabemodell eingefügt werden, verfolgt , wie von den Objekteingaben gesehen. Hier ist eine Definition für das Eingabemodell. Sie sehen also alles, was es tut, ist, das Passwort per E-Mail zu senden und das Passwort zu bestätigen. Die Validierungen sind vorhanden, weshalb wir diese Validierungsnachrichten über die Mindestlänge des Buzzworts erhalten haben , oder? Und der Fuß, den sie brauchten, um all diese Dinge zu erfüllen, ist aus dem Tellerrand. Soul, wenn ich das erweitern wollte, würde ich mich einfach einen von ihnen kopieren lassen, der da ist. Alles klar, also Vorname, Vorname, das sind unsere neuen Felder. Anzeigename, Vorname. Ich habe keine Längenanforderungen und es ist kein Chef oder Datentyp, also brauche ich das nicht alles. Das war's also für FirstName. Ich kann das duplizieren und das für ihren Nachnamen tun , weil diese beiden so ziemlich dasselbe sind, oder? Beide sind erforderlich. Für das Geburtsdatum sind jedoch möglicherweise keine Geburtsdaten erforderlich, daher gebe ich das Geburtsdatum Putin den Anzeigenamen ein. Aber es ist nicht erforderlich und es ist definitiv keine große Sache, wenn es nicht bereitgestellt wird. Aber ich zeige dir nur, wie du das Glas verlängern würdest. Wissen Sie, wann ich zurück zum Formular gehe oder die roten Linien weg sind, weil nein, sie sehen die Felder. Das ist in Ordnung. Wenn wir jetzt auf Fall registrieren klicken, also Benutzername, okay, wir heben den gesamten Benutzernamen. Lassen Sie mich sicherstellen, dass ich den Benutzernamen eingebe. Und ein Benutzername wäre ebenfalls erforderlich. Und hier könnte es kreativ werden. Man könnte sagen, wenn Sie eine andere Verwendung wünschen, verwenden Sie einen improvisierten, sonst verwenden wir die E-Mail und es wird immer noch flach , dass Sie kreativ und experimentieren können. Und ich denke, das Drehen, das ich für den Benutzernamen verwende, ist anders. Da sind wir los. Wenn wir also auf die Schaltfläche „Registrieren“ auf der Seite , wird der Beitrag treffen. Also holen Sie es die Seite. Das ist in Ordnung. Oh, das funktioniert. Und dann werden Sie sehen, dass sie verschiedene Drittanbieter-Bibliotheken haben, die keine anderen Bibliotheken haben, wie Anmeldemanager, Benutzermanager und E-Mail-Absender. Der Absender muss das Geld wild überweisen. Später machen wir das. Sie haben auch mehrere Bücher über Logger, das ist in Ordnung. Aber zwischen Sand und Monitoring-Benutzermanager haben Sie eine Menge leistungsstarker Schaumstoff und nur allgemeine Funktionen, die Ihnen helfen, alle in Verbindung stehenden Operationen in den USA zu manipulieren. Lassen Sie uns also kontinentalen, was auf Posts passiert. Also auf dem Postweg wissen wir, dass Sie ein Anwalt sind. Wir bekommen die externen Logins, von denen es keine gibt, oder? Und du musst dir darüber auch keine Sorgen machen. Aber dann machen wir die Validierung. Die Validierung ist relativ zu allen Validierungsregeln hier, das ist in Ordnung. Wenn es also gültig ist, bauen wir unseren Benutzer auf. Beachten Sie also, dass Var-Benutzer gleich einem neuen Benutzer sind. Wenn wir nicht angegeben hätten, dass wir eine spezielle Klasse verwenden, wäre es ein neuer Identitätsbenutzer gewesen, oder? Was immer noch funktionieren würde. Tatsache ist jedoch, dass wir uns darauf beschränken würden, welche Felder wir verwenden können und können. Beachten Sie also, dass wir die User-Klasse verwenden, ich kann sagen, wie lautet der Benutzername? Hier ist der Grund, warum Benutzername und E-Mail denselben Wert erhalten haben, da Sie standardmäßig einen Benutzernamen angeben müssen, Sie müssen eine E-Mail angeben. Und was der Standardcode macht, ist die E-Mail als beides festzulegen. Jetzt, da wir unser Formular erweitert haben, um tatsächlich nach Benutzernamen zu fragen, kann ich sagen, dass der Benutzername im Benutzernamen enthalten ist, E-Mail ist eine Eingabe-Punkt-E-Mail. Und dann kann ich das für alle anderen Bereiche machen. Geburtsdatum, Geburtsdatum sind also keine Eingaben. dachte an die Geburt usw. Also habe ich gerade getan, dass für Nachname und Vorname und Geburtsdatum einen Fehler verursachen, weil ich es gesagt habe, String 1, es sollte es sein. Nachdem wir diese Anpassung vorgenommen haben, können wir einfach unser gesamtes Benutzerobjekt überprüfen. Das wollen wir also lagern. Nein, Sie verwenden eine unserer Bibliotheken namens User Manager. Lasst uns gehen Baco, das wird für Mantisse verwendet und es wird eingespritzt. Mit freundlicher Genehmigung der IL-4-Identitätsbibliothek erhalten wir dieses Benutzermanager-Objekt oder eine Bibliothek mit einer einfachen Funktion, mit der wir erstellen können, was erstellen wir wo einen Benutzer erstellen und ihnen dieses Passwort geben. Denken Sie also daran, dass wir dieses Passwort im Klartext eingegeben hätten. Aber wenn diese Methode beendet ist, hätte sie sie bis zu dem Punkt gedämpft, an dem sie völlig unkenntlich wäre wie auf welchem Alpha, derselbe Chef oder es wird in der Tabelle immer anders aussehen , weil ich folgte dieser Methode die Haltung. Hashing ist also ein sehr wichtiges Verfahren, bei dem wir die Präsentation des Passworts für die Speicherung verdecken. Und es ist immer eine Einwegoperation, also möchten Sie keine gehashten Passwörter verwenden, Passwörter gehasht und dann eine andere Zeichenfolge hashen, um sie mit dem ursprünglichen Hush zu vergleichen, oder? Sie haben also ein Passwort verdeckt. Und wenn die Person dann zum Login kommt, verdecken Sie, was sie getippt hat, und wackelig beide obskuren Versionen , die gleich aussehen. Wenn nicht, scheitert es. Nun, Sie möchten nicht, dass das, was in der Datenbank gespeichert ist, um es dann zu vergleichen. In Ordnung, Hashing ist also ein sehr wichtiges Sicherheitsprotokoll, das Kennwörter versteckt oder ausblendet. Alles klar, dann nach denen, das könnte oder auch nicht gelungen sein, und wenn es dann gesagt wurde, dass ein Ergebnis Punkte erfolgreich waren, dann wird es sich protokollieren, okay? Ja, nett. Und die Anmeldung ist sehr wichtig für sicherheitsbasierte Anwendungen oder Tools. Sicherheit von der Anwendung übrigens. Also wirst du das Ding später etwas mehr einloggen sehen. Was hat das gemacht, ist ein Token-Code zu generieren. Nein, wir können den Tolkien-Manager ändern, was bedeutet, dass wir unseren eigenen Körper verwenden können, weil wir die Standardidentität verwenden. Wir verwenden die Standard-Token-Engine. Und dieser Tolkien ist im Grunde genau diese Tatsache, Still, Hush String. Sie würden am Ende einer URL sehen, dass sie diese Bestätigungs-E-Mail erhalten. Klicken Sie hier, um die URL zu bestätigen oder klicken Sie auf. Ich bin es ist URL www_website.com diese lange alphanumerische Kombination. Das ist, was dies tut, ist, dass es den Code für uns in Bezug auf die Entzündung generiert , die der Benutzer zur Verfügung gestellt hat. Und dann kodiert es es und dann sendet es Kunst erstellt eine URL. Es heißt also, dass die Rückruf-URL diese Seite ist, oder? Und es fügt der E-Mail diese Werte hinzu, die irgendwann gesendet werden. Wie ich schon sagte, wir werden Tops verkabeln, indem wir diese E-Mail tatsächlich versenden. Aber ich möchte, dass Sie alles schätzen, was genau hier passiert. All dies erzeugt also diesen Tolkien für dich. Und dann sendet es diese E-Mail. Und wenn Sie dann einen Manager Punktoptionen verwenden, müssen Sie unsere Kegel bestätigt haben, dann wird es zu diesem Beat weitergeleitet. Beachten Sie also, dass dies eine Piazza ist, die wir nicht erstellt haben, aber indem wir nur die Standardidentität hinzugefügt haben, ist sie tatsächlich so groß geworden, oder? Wir haben es nicht erstellt, wir haben kein eigenes erstellt. Wir haben nur ein Handgemenge, aber wieder einmal, da Sie die Standardidentität hinzugefügt haben, ist diese Benutzeroberfläche in unserem Projekt impliziert. Nur wenn wir etwas ändern müssen, müssen wir diese physische Seite tatsächlich generieren, wie wir es für die Registrierung getan haben. Also richtig, nein, es wird Erich immer zu diesem Takt lesen. Wenn wir also unseren E-Mail-Mechanismus einrichten, können wir diesen Teil einfach entfernen. Und dann können wir einfach auf die Art und Weise umleiten, wie wir uns bei der Person oder anderen anmelden können, und dann zur Rückgabe-URL umleiten. Das heißt, wenn sich die Person auf der Kategorieseite befand und dann auf Registrieren geklickt hat, wissen wir, dass die Rückgabe-URL, wir wissen, wie das von null funktioniert. Alles klar? Aber der Anmeldemanager ist eine weitere Variable für die Bibliothek, die dem Zeichen in diesem Benutzer am nächsten kommt. Ich entscheide, dass der Manager dieses Cookie tatsächlich erstellt, ihnen die in der Datenbank gespeicherten Ansprüche gibt und diesen Benutzer authentifiziert insgesamt. Wir sehen also ein bisschen mehr davon, wenn wir in den Login-Teil unserer Aktivitäten einsteigen. Das passiert also im Grunde, wenn wir auf Registrieren klicken. All dieser Code mag einfach erscheinen. Kunst ist einfach und aufgrund dieser Hilfsbibliotheken, die uns durch die Identitäts-Suite von Tools gewährt werden, sehr einfach gemacht . Aber es ist ein sehr, sehr komplexer Prozess im Eimer. Okay, also wenn all diese fehlschlagen und der Benutzer, ist es, wenn es nicht erfolgreich war, die Federals und gültig. Es wird einfach weitergehen und alle Fehler kompilieren und die Seite zurückgeben. Was ich also tun werde, ist, Mutter oder Verteilung zu testen , nur um sicherzustellen, dass alles noch funktioniert. Also null in unserer Registrierung. Sei also nicht AGC, obwohl wir alle Felder haben, die wir spezifisch hatten. In Ordnung, also statt Benutzernamen hier, bin ich bereit, admin test.com zu sagen. Vorname ist Admin, Nachname ist Test und dann Geburtsdatum. Wähle einfach den Tag aus. Und dann mein spezielles Passwort, das ist p bei San Assist Allele oder D1. Und wiederhole das einfach. Und dann können wir auf „Register“ klicken. Und wir werden zu dieser Registrierungsbestätigung weitergeleitet. Wissen, was das alles an diesem Token ist. Wenn Sie sich diese URL ansehen, wenn Sie nur den Mauszeiger darüber bewegen und sich die URL ansehen, die angezeigt wird, werden Sie sehen, dass alles, was nach der Benutzer-ID kommt, gleich ist, das ist eher die Benutzer-ID in der Datenbank. Und dann wirst du sehen, dass du ein kaufmännisches Und-Zeichen hast, dann das Wort Code, und dann ist das alles nach dem Code der Tolkien , der LC und generiert wird, oder? Also haben wir nichts davon gemacht, das alles aus der Box. Also habe ich gerade einen Kegel bestätigt und das ist in Ordnung. Sie sehen also, dass hier das Zitat ist, dass ich den ganzen Tolkien-Code erwähnt habe , der generiert wurde. Lassen Sie mich also eine andere Verteilung ausprobieren, eigentlich werde ich den Nahtbenutzer verwenden. Und ich, ich bin nur, ich erzwinge nur einen Fehler, um zu zeigen, was passiert, wenn bestimmte Einschränkungen verletzt werden. In Ordnung, also wenn Sie dasselbe Zeug verwenden, sehen Sie hier, es heißt, dass der Benutzername Admin bereits übernommen wurde. Als es diese Fehlerliste hier generiert hat, bedeutet das, dass das Ergebnis nicht erfolgreich war, weil es versucht hat zu erstellen. Aber dann basierend auf den Constraints wird verwendet, um mit demselben Benutzernamen aus dem Feld zu verwenden. Es gibt gewisse Einschränkungen, bestimmte Dinge, die uns sagen werden, wie wir haptisches Feedback erhalten. Wir können sie twittern, während wir weitermachen. Wir können unsere benutzerdefinierten Benutzer erstellen, die benutzerdefinierte Authentifizierungsregeln verwalten, alles, was wir brauchen. Wir können die Identität nach Bedarf erweitern. Wenn wir also wiederkommen, schauen wir uns an, was nötig ist, um diese E-Mail-Bestätigung so einzurichten , dass wir bei der Registrierung diese E-Mail tatsächlich sehen können, sozusagen. 12. Email für die Anmeldung: Alles klar Leute. Also sind wir wieder dran. Wir möchten unseren E-Mail-Absender einrichten und alle diese E-Mail senden, nachdem sich der Benutzer registriert hat, diejenigen, die weit davon entfernt sind, die Erfolgsraten der kleinen Methoxie 1 und 2 zu erstellen. Es erhöht das Sicherheitsniveau und bringt irgendwie eine Zwei-Faktor-Authentifizierung auf dem Kindle für das Regime ein. Obwohl es nicht die sicherste Option ist, bringt es immer noch dieses Sicherheitsniveau. Wir werden uns also auf jeden Fall ansehen, wie es umgesetzt wird. Und wenn Sie den E-Mail-Absender zur Registrierung haben, werden Sie feststellen, dass es andere Verfahren wie das Zurücksetzen des Passworts gibt. Obwohl die beiden Dinge, die unsere E-Mails versandt werden, und wir E-Mail-Absender im Verhältnis zu unserer aktuellen Aufgabe einrichten, die unseren Benutzer gut registriert, die unseren Benutzer gut registriert kann auf diese E-Mail-Absenderschnittstelle von Absendern I E-Mail überall zugegriffen werden. Sie können es immer einfach so registrieren wie ich es eher bei Startups registrieren werde , damit es woanders verwendet werden kann. Okay, also schauen wir uns an, was nötig ist, um dieses offene Verdienst zu erzielen. Zuerst ging es dann zum Erstellen eines neuen Ordners. Und ich rufe diese Dienste an. Und in Dienstleistungen werden wir eine neue Klasse hinzufügen. Und ich rufe diesen Kurs einfach per E-Mail an Absender. In Ordnung, also haben wir unseren Absender unserer Klasse und er wird vom E-Mail-Absender erben. Dieser E-Mail-Absender wird also die Methode „E-Mail senden“ asynchron implementieren. Das ist also definitiv das, was wir brauchen. Bevor wir weiter gehen, möchte ich dies im Startup registrieren. Also wollte ich sicherstellen, dass die Anwendung weiß, dass dieser Dienst ausgeführt wird. Also werde ich sagen, dass Services dot add, transient. Und ich sehe, dass ich einen E-Mail-Absender vom E-Mail-Absender implementiert wird. Und dann fügen wir alle fehlenden oder zum Beispiel noch schlimmer hinzu. Nein, ich lasse das vorerst hier, aber ich werde das definitiv noch einmal überdenken, weil ich denke, wenn wir hier fertig sind, muss diese Zeile anders schreiben. Also kein Problem. Was ich also im I-Beam in der E-Mail-Absenderklasse mache ist, ein paar Felder für unseren Server oder Port an unserer Adresse einzurichten. Jemand, der SMTP wie Sitzungen benutzt. Für diese Aktivität, wie Oh, befinden wir uns jedoch in einer div-Umgebung und möglicherweise hat nicht jeder Zugriff auf einen SMTP-Server und so weiter. Was wir verwenden werden, ist SMTP-Server mit lokalem Host. Und wir werden uns genug Nutzen anschauen. Für null haben wir also die Felder. Wir haben also die Felder für SMTP-Server, SMTP-Ports von der E-Mail-Adresse. Und dann habe ich einen Konstruktor, der sie zunächst initialisiert, damit Sie das pausieren und replizieren können. Jetzt, in der E-Mail senden wird erwischt, werde ich eine Nachricht erstellen. Sagen Sie also var message z gleich einer neuen Nachricht. Also unsere neue Mail-Nachricht. Und das wird die Dotnet-Punkt-männliche Bibliothek des Systems erfordern. Und in dieser Mail-Nachricht können wir die von den Themen des Körpers einrichten und der Körper hat Recht. Also können wir all diese einrichten. Weil Schicken Sie mir eine Spüle legen ist eine Erwartung, die von jeder Verbrühung zu erwarten. Wir haben also alle diese Informationen zur Verfügung. Wir gehen zu hartem Code oder von der E-Mail-Adresse, weil Sie im Allgemeinen von so senden würden, wie ich nicht antworte, keine Wiederholung, so etwas. Es spielt keine Rolle. Geschäftsregeln unterscheiden sich. Wir durchlaufen gerade ein grundlegendes Setup. Nach all dem setzen wir den Nachrichtenpunkt hinzufügen und fügen eine neue Essensadresse für die E-Mail-Adresse hinzu , an die voraussichtlich gesendet wird. Und dann rufen wir einen SMTP-Client auf, der den SMTP-Server und die Portwerte verwendet , die über den Konstruktor übergeben worden wären und diese Nachricht im Freien versendet werden. Wir geben einfach zurück, dass die Aufgabe abgeschlossen wurde. Das sind also die Grundlagen von Mobiltelefon, E-Mail-Absender mit SMTP. Und alles was ich gesagt habe, dass wir alles lokal mit unserem eigenen SMTP machen werden. Was ich also tun werde, ist diese Startdatei zu ändern und r, tut mir leid, diese Zeile beim Start. Und was ich tun werde, ist transient hinzuzufügen und es wissen zu lassen, dass der Dienstleister, also was S hier den Dienstanbieter repräsentiert. Ich kann Sie also wissen lassen, dass es ein neuer E-Mail-Absender sein wird. Und dann nimmt der E-Mail-Absender diesen SMTP-Server als ersten Parameter. In Ordnung, also sagen wir lokalen Host oder was auch immer der SMTP-Server ist, den Sie verwenden. Einige Personen würden das tatsächlich in die App-Einstellungsdatei einfügen und dann die Konfiguration aufrufen. Es gibt so viele Möglichkeiten, dies zu tun. Wir verwenden das Standardporträt ist 25. Und dann die E-Mail-Adresse, ich sage einfach keine Antwort. Classified.com. dort wird erwartet, dass die E-Mail gesendet wird. So wird das im Startup im Grunde aussehen. Kommen wir jetzt zu unserem SMTP-Server. Also werden wir diesen Luca SMTP-Server namens Paper verwenden , den Sie zu einem Paper Cut Dot Dash smtp.com erhalten können. Und es dient gleichzeitig als SMTP-Server und E-Mail-Viewer. Es ist also ein wirklich praktisches Entwicklungswerkzeug, stilvolle, das Sie nur sehen möchten Funktioniert dieser E-Mail-Mechanismus? Ich sehe, was ich in Tests sehen muss, oder? So kannst du weitermachen und darüber nachlesen, wenn du willst. Aber für anomales Interesse daran, die neueste Version herunterzuladen. Also hosten sie es auf GitHub, wir können es einfach herunterladen. Und sobald das Setup im Gange ist, werden Sie möglicherweise aufgefordert, diese durchzugehen. Sie können also einfach weitermachen und installieren. Und sobald dies erfolgreich abgeschlossen wurde, können Sie es auf Ihrem Computer öffnen, damit Sie einfach auf Start klicken, Nach Papierschnitten suchen und ein ähnliches Fenster erscheint. Möglicherweise müssen Sie auch in der Firewall freigeben, damit der Zugriff zugelassen wird , damit er weiß, dass mein Computer dieser Anwendung vertrauen kann. In Ordnung, so sieht der E-Mail-Manager also aus. Aber wieder verdoppelt es sich als SMTP. Lassen Sie uns das also für einen Dreh machen. Also fülle ich nur meine Umverteilungsseite mit ein paar Testdaten aus und klicke dann einfach auf „Registrieren“. Wie üblich navigieren wir zur Registrierungsbestätigungsseite. Richtig. Also heißt es, bitte überprüfe deine E-Mail, um Europe Kegel zu bestätigen. Beachten Sie also, dass es nicht mehr zu dieser Simulation geht. Wenn ich im Koordinatensystem schnell zur Registrierungsseite schaue, was war das? Es hieß, dass es diesen E-Mail-Absender versenden wird und dann, ob die Optionen eine Bestätigung unserer Kegel erfordern, gehen Sie dann zur Registrierungsbestätigung. Das ist in Ordnung. All das, das ist in Ordnung. Aber wenn ich in Pay-per-Click springe, siehst du hier, dass wir die E-Mail haben. Okay, bitte bestätige deinen Artikel und indem du hier klickst, genau das haben sie gesagt. Bitte bestätigen Sie Ihre Spalten, indem Sie auf klicken. Und dann haben wir das Anker-Tag mit der HTML-Kodierung unserer Callback-URL und des Tolkien-Codes. Und das alles, um hier zu klicken, oder? Das ist also grundlegend, was das auf den Tisch bringt. Also ja, wir können die E-Mail testen und alles, was wir sehen, dass sie funktioniert, wie genau sie funktioniert, so viele Informationen, wie Sie dem Benutzer präsentieren möchten, oder? Dort würdest du das machen. Also werde ich nur hier klicken sehen. Er navigiert und sagt dann: Du bist nicht bestätigt. Okay, woher weiß ich, ob ich wirklich bestätigt bin oder nicht? Wir können einfach zurück zu unserer Datenbank als Levodopa hier drin springen. Wenn ich aktualisiere und alle Benutzer anschaue. Also hier ist dieser aktuelle Benutzer. Sie werden hier sehen, dass die E-Mail bestätigt wurde. Das ist also derjenige, den ich gerade per E-Mail bestätigt habe. Und merke noch einmal mit den Passwörtern alle drei Boss oder ist es anders? Nun, sie sind die gleichen. Sei dabei zu sagen Dies ist das Blau oder ID1. In Ordnung. Also denke ich, das war's für nein. Wie gesagt, diese E-Mail-Absender werden an mehreren Stellen für mehrere Tests und Situationen verwendet. Tut mir leid, lass mich einfach meine Orientierung schnappen. Dieser E-Mail-Absender sendet also E-Mails zur Verteilung, Bestätigung für Passwort vergessen und für alles andere, was Sie benötigen. Sobald Sie diesen SMTP-Server mit Paper Cut ausgeführt haben, Sie diese E-Mails gerne testen, wie sie in verschiedenen Einstellungen und Situationen überall aussehen werden . 13. Zusätzliche Password: Willkommen zurück Leute. Wir richten also unsere Distribution ein und implementieren Sicherheit. Und wir haben uns kurz einige der Sicherheitsoptionen angeschaut , die irgendwie in die Identität integriert sind, die wir einfach direkt in die Pipeline stecken können. Wissen Sie, dass das wiederkehrende Thema der Reihenfolge mit Identität Erweiterbarkeit ist, da Sie nicht ständig die Standardoptionen erhalten, die Ihren spezifischen Anforderungen, Ihren Geschäftsanforderungen oder was auch immer Sie erreichen möchten. Dies sind das Finale der Bulks bis zu einem bestimmten Punkt. Nun, 20 wollen einfach nur diesen kleinen Vorteil rübergehen. Möglicherweise müssen Sie einige Erweiterungen schreiben. In dieser Lektion werden wir uns also darum bemühen, zusätzliche Passwortsicherheit hinzuzufügen. Und diese zusätzliche Passwortsicherheit könnte davon abhängen, was Ihre Vision dafür ist , welche sicheren Passwörter in Ihrer jeweiligen Organisation oder Ihrer speziellen Einstellung enthalten sein müssen . Weltweit wissen wir also, dass wir eine Ziffer so weiter benötigen wollen. Nicht weniger als acht Zeichen lang, ja, Großbuchstaben und all diese Dinge. Klar. Aber was wäre, wenn Sie sicherstellen möchten, dass bestimmte Keywords nicht in ihrem Leben oder Firmennamen oder sogar der Benutzer enthalten sind. Manchmal verwenden Benutzer ihren eigenen Namen als Passwort, solche Sachen. Sie könnten tatsächlich dazu beitragen, die bestimmten Dinge zu mildern, die durch das Schreiben Ihrer eigenen benutzerdefinierten Methoden Funktionen sind. Die Sache ist also, dass zu diesem Zeitpunkt Dienstpunkt-Standardidentität wir in Add Entity Framework-Stores hinzugefügt hatten, wie wir es angewiesen haben, die DVI-Kontexte zu verwenden. Aber wir könnten dieser Pipeline tatsächlich noch mehr hinzufügen. Also werde ich einfach das Semikolon entfernen und bin zur Linie gegangen , damit wir sehen können, wo jeder beginnt und aufhört. Und dann könnte ich unter dem Punkt sagen. Und wenn Sie sich ansehen, was Sie bekommen, sehen Sie, dass Sie etwas Teil zwei Kilo haben, lassen Sie mich einfach finanzierte Daten sagen, lassen Sie mich mit der Eingabe von Validaten beginnen und so können Sie eine Passwort-Gültigkeit hinzufügen kann einen Regelvalidierer, Kanada-Benutzer Validator. Wenn Sie Erweiterungsmethoden schreiben möchten, tun wir dies für die Passwortpipeline oder die Validierungspipeline. Es ist so einfach, sie einfach in den Identitätsdienst zu stecken, den Sie hinzufügen. Du kannst sie einfach hinzufügen. Also jedes benutzerdefinierte Kontingent, das Sie schreiben müssen, oder wenn Sie Ihren eigenen Tolkien-Anbieter, Heroin-Benutzerspeicher verwenden möchten , was auch immer es ist, da Sie die Datenbank möglicherweise nicht unbedingt so verwenden, wie wir es sind. Er hat möglicherweise eine Datenbank und Sie möchten Ihren eigenen Shop verwenden. All diese Dinge sind möglich. Also mache ich den Passwort-Validator. Und hier werde ich die Klasse haben, dass jemand den Passwort-Validator-Dienst aufruft. Sie geben ihm also einfach die Klasse, die Sie verwenden oder erstellen möchten. In unserem Fall werden wir das schaffen. Ich habe es schon erstellt, also ist das in Ordnung. Du kannst weitermachen, den Klassenknopf dort machen. Und dann habe ich einen neuen Ordner zur Entität Add hinzugefügt und diese Klasse dorthin gelegt. Also kannst du einfach weitermachen und das machen. Und so ziemlich das ist ein Muster für jede andere Anpassung oder Erweiterung, die Sie dieser Identitätspipeline hinzufügen möchten. Wenn ich also zu dieser Klasse gehe, die Markenmerkmale dieser CSS-Standardklasse, aber sie erbt von i Passwort-Validator mit den Kontexten unserer benutzerdefinierten Benutzerklasse. Also habe ich gefördert, dass der Validator aus unserem Microsoft Dot ASP NET Core-Identitätsordner oder der Bibliothek stammt . Und der Benutzer stammt aus unserem Entitäts-Namespace. Sie können also fortfahren und eingeben, dass der nicht verwendete Steuerpunkt die fehlenden Referenzen enthält. Sobald Sie dies getan haben, müssen Sie das Benutzergesicht implementieren, wodurch Sie diese Methode namens „Validate a sink“ erhalten. finanzierte Async übernimmt sowohl den Manager als auch das Benutzerobjekt und das Passwort, während sie während des Registrierungsvorgangs erstellt werden. Also habe ich einen Beispielcode eingegeben, was hier passieren könnte. Ich sehe nur, ob das Passwort diese Bedingung erfüllt , und wenn Sie nicht möchten, haben Sie alle Ihre Bedingungen, was auch immer es ist, Sie geben das Passwort durch Ihre Schecks und Guthaben. Wenn es die Marke nicht trifft. Er ist Ihr Geschäftsregeln, weil es nur so weit kommen wird , wenn das Passwort RD MIT diesen Anforderungen. Wenn es diese Anforderungen erfüllt, dann wird es hier runter gehen und sagen: Okay, lassen Sie mich dieses Passwort basierend auf dem, was das Unternehmen will, weiter prüfen. Unternehmen möchte also, wenn es diese zusätzlichen Anforderungen nicht erfüllt, dann werden wir den Aufgabenpunkt aus Ergebnissen und Identitätsergebnissen zurückgeben. Diese Methode benötigt also Identitätsergebnisse, oder? Weil es das ist, was das zurückkehrt. Wir müssen also dieses Identitätsergebnis zurückgeben und scheitern, der eine Reihe von Identitätsfehlern erfordert. Sie könnten diesen Bereich also einfach kompilieren, den Bereich kompilieren, Bereiche so viele Verstöße zusammenstellen, wie Sie diesen Bereich kompilieren, einen neuen Identitätsfehler pro Verstoß hinzufügen und dann schließlich mit diesem Ergebnis enden. Rückgabe des Identitätsergebnisfeldes mit möglicherweise der ganzen Reihe von Fehlern. Dies sind die Bereiche, die auf der Registerseite als Fehler angezeigt werden, um zu sehen, warum Sie sich nicht registrieren können. Denken Sie also daran, dass, als wir versuchten, uns zu registrieren, wenn wir kein ausreichend starkes Passwort eingegeben haben oder ein Benutzername genommen wurde, es zurückkehrte und sagte: hey, das ist falsch. So ziemlich Identitätsfehler. Das wird auf der Seite angezeigt. Einmal diese Boni. Wenn jedoch alles in Ordnung ist, würden wir einfach den Erfolg des Identitätsergebnispunkts zurückgeben. Wenn wir zur Registrierungsseite zurückkehren, werden Sie eine Menge davon sehen, ob ein Ergebnispunkt erfolgreich ist. Also das Ergebnis, dass ich versuche, diesen Benutzer zu erstellen, wenn er erfolgreich ist, dann fahre fort. Zeigen Sie andernfalls die Fehler an, die aus dem Ergebnis zurückkamen. Das ist also alles, was genau hier passiert. Also habe ich diese Methode nachgerüstet, um mein Szenario, das ich gerade gemalt habe, nach Hause zu fahren. Sagen wir also, dass wir eine Reihe von Dingen haben, nach denen wir suchen. Ich initialisiere zunächst eine neue Liste von Identitätsfehlern. Dann habe ich die verschiedenen Formen. Eine Überprüfung könnte also sein, dass, wenn das Passwort den Namen des Unternehmens enthält, Sie eine Identität hinzufügen, ERCP und dass der Code Firmenname ist, was die Beschreibung ist, die tatsächlich auf der Seite für den Benutzer ausgedruckt wird, ist, dass Sie den Namen des Unternehmens nicht enthalten sollten, oder? Und obwohl einer, wenn es einen Vornamen oder den Nachnamen enthält, den der Benutzer eingibt, dann können oder sollten wir Ihren Namen nicht enthalten. Dieser benutzt mehr E-Mail. Du willst auch nicht, dass sie das hineinstecken. Du hast eine angemessene Nachricht geschrieben. Nach all diesen Überprüfungen werden nur neue Fehler hinzugefügt und neue Eris zur Liste hinzugefügt. Und wenn wir am Ende tatsächlich Fehler stattdessen haben, dann möchten wir zurückgeben, dass es fehlgeschlagen ist, und wir möchten diese Liste ein Array konvertieren. Warum würde ich das machen? Denn denken Sie daran, dass es IRI von Identitätsfehlern annimmt. Also hatten wir eine Liste zusammengestellt. Wir wandeln es nur in letzter Minute in ein Gebiet um, um Geld mit dem Fehler zu schicken. Ansonsten war es ein erfolgreicher, geförderter Schöpfungsversuch. Also an dieser Stelle zum Essen, also weiter, um die Integration in Dienste Dritter zu erwägen. Wieder einmal hängt es von Ihren Geschäftsregeln ab, also gebe ich Ihnen nur die Ideen. Dort verfügen Sie jedoch über Dienste von Drittanbietern, die Ihnen helfen, die Stärke von Passwörtern im Verhältnis dazu zu bestimmen , wie oft diese Passwörter in der Vergangenheit verletzt wurden. typisches Beispiel für einen solchen Service wäre PEW 100.com, PWN Ed.com. Und sie sagen dir tatsächlich, okay, dieses Passwort wurde verletzt. Vielleicht habe ich mal in der Vergangenheit Stipendiaten. Sie möchten also nicht, dass Ihre Benutzer das Verstoßsymbol verwenden. Passwörter sind möglich. Die Ergebnisse sind bekanntermaßen anfällig wie Passwort-RP bei Zeichen als Systole oder ID1, wie ich es verwende, richtig. So können Sie sich in andere Teile oder Dienste von Drittanbietern integrieren. Zu diesem Zeitpunkt Ihren gesamten Validierungs-Workflow luftdichter und unterhaltsamer gestalten , obwohl das im Grunde genommen der Fall ist. Wir haben es gerade erweitert, damit es schnell läuft. In Ordnung, also hier sind nur während eines brandneuen Nutzers. Und was ich tun werde, ist das Passwort einzugeben und sicherzustellen, dass es die Mindestlänge erfüllt. Was ich in das Wort Test einsetzen werde. In Ordnung? Und ich mache das Gleiche, höre nicht. Und ich bin mir nicht sicher, ob das richtig funktioniert, weil ich keine Groß- und Kleinschreibung beachte, also brauche ich definitiv eine Änderung. Also der Code, um sicherzustellen, dass die Strings bei der Groß- und Kleinschreibung überprüft wird. Aber ich wollte nur sehen, was passieren wird. also nicht im Debug-Modus läuft, wenn ich auf Registrieren klicke, siehst du hier das Passwort sollte deinen Namen nicht fortsetzen. Es springt also mit genau dieser Ära, in der wir einfach sitzen. Alles klar, also unterbrechen Sie alles andere, scheiterten aber bei den strengeren Maßnahmen, die wir ergriffen haben, damit es wirklich einfacher ist, die Funktionalität der Identity Services zu erweitern. 14. Registration – Section: Alles klar Leute, also sind wir bereit, diesen Abschnitt oder dieses Modul zu schließen. Und ich denke, wir haben hier eine bestimmte Arbeit geleistet. Wir haben also unserer Projektminute eine Identität hinzugefügt , in der wir die Benutzerklasse erweitert haben, indem wir unsere eigene Klasse erstellt sie vom Identitätsbenutzer geerbt haben. Wir können unsere eigenen benutzerdefinierten Felder einsetzen. Nach all dem mussten wir den DB-Kontext wissen, dass jeder den Identity DB-Kontext im Gegensatz zu unregelmäßigen DB-Kontexten im Rahmen dessen verwenden sollte Identity DB-Kontext im Gegensatz zu unregelmäßigen DB-Kontexten im Rahmen dessen verwenden , was unsere neue Benutzerklasse bietet. Wir mussten auch sicherstellen, dass wir diese Basis auf das Modellieren legen , weil wir die Ära gesehen haben, die wir mit älteren Kindern haben. Darüber hinaus haben wir unsere Migration durchgeführt, die uns eine zusätzliche Migrationsdatei gab, die alle diese identitätsbezogenen Tabellen für uns in der Datenbank erstellt hat. An dieser Stelle dies wahrscheinlich schon einmal erwähnen sollen, aber es gibt Zeiten, in denen Sie möglicherweise einen anderen Benutzerspeicher als die tatsächliche Transaktionsdatenbank behalten möchten . Und an diesem Punkt wäre es so einfach, einen anderen Datenbankkontext zu erstellen und ihm eine eigene Verbindungszeichenfolge im Startpunkt-CS-Bereich zu geben, oder? Sie hätten also zwei davon, einen für die Befürworter in DVI-Kontexten, 14 bis Identitäts-DVI-Kontexten, möglicherweise verwenden Sie einen benutzerdefinierten Namen. Das ist also in Ordnung. Nun, dann werden Sie natürlich in der verschiedenen Verbindungszeichenfolge sagen, dass Sie diese Datenbank für diesen Zweck verwenden sollen. Und dann könnten Sie wahrscheinlich BK machen, dass dann so etwas wie Identität, DB-Verbindung, und dann geben Sie ihm eine eigene Verbindungszeichenfolge. Also ich teile nur verschiedene Dinge mit dir, weil du dir vielleicht alle Projekte und UCI anschaust, verschiedene DVI-Kontexte für benutzerbezogene Dinge. Und selbst dann, selbst wenn sie denselben Datenspeicher verwenden, können Personas manchmal die Anwendungs-DVI-Kontexte trennen. Das die unregelmäßigen Daten, Daten unterscheiden sich von identitätsbasierten DVI-Kontexten. Ich demonstriere es nur hier. Also Benutzer-DVI-Kontexte. Dieser wäre also immer noch DB-Kontext. In Ordnung, nun, dann würde der andere wissen, dass er vom Identitäts-DB-Kontext erbt, und es würde keine DB-Sets benötigen, weil die gesamte Box nichts anderes tut, als identitätsbasierte Dinge zu behandeln. Sie können also sehen, dass Dinge, die ich nur verschiedene Nuancen teile , verschiedene Dinge sind, auf die Sie stoßen könnten, wenn Sie wachsen und mehr Projekte entwickeln, so dass Sie ein Verständnis und eine Wertschätzung für eines haben , wenn Sie am Ende möglicherweise enden ich mache bestimmte Dinge. Alles klar. Abgesehen davon haben wir uns jedoch alle Gerüste oder Bereiche angeschaut und wir haben eine Seite gerüst oder registriert. Wir haben das Formular erweitert, um zusätzliche Felder relativ zu unserer benutzerdefinierten Benutzerklasse zu haben. Wir haben uns die Registrierungsdatei angeschaut und die einzigen Änderungen, die wir wirklich oder einfach vornehmen mussten, um sicherzustellen, dass wir diese zusätzlichen Informationen in unser Benutzerobjekt erfassen , bevor der Benutzer erstellt wird. Wir müssen unseren EMEA-Absender implementieren. Also wie, oh, wir haben diesen E-Mail-Absender am Laufen. Nein, wir können eigentlich einfach gut, wir können all diesen Code lassen, ist, dass das in Ordnung ist. Also leiten wir einfach auf die größte Bestätigung um. Wir müssen uns nichts davon beunruhigen. Aber wir haben unseren E-Mail-Absender genau hier implementiert. Im E-Mail-Absender legt es in einen Dienstordner ab. Wir sagten, dass unsere SMTP-Einstellungen und am Startup-Wochenende diese Werte fest codiert haben. Stattdessen verwenden wir einen lokalen Host, der leicht gegen Ihren tatsächlichen SMTP-Server ausgetauscht werden könnte. Wir verwenden den Port und dies ist die E-Mail, von der alles gesendet wird. Und zum Testen hätten wir unser Papier namens SMTP eingerichtet. Abgesehen davon haben wir unsere Standardidentität hinzugefügt. Wir haben uns das Foto angeschaut, das wir in unsere benutzerdefinierten Regeln eintragen können, wie Benutzerinformationen zum Zeitpunkt der Registrierung validiert werden. Und verschiedene Einschränkungen, die wieder auf dieser Ebene eingeführt werden, müssen wir sicherstellen, dass wir die Entity Framework-Stores hinzufügen. Und wir haben uns auch angeschaut, dass wir Razor-Seiten hinzufügen müssen. Wenn Sie sowohl eine MVC-Anwendung als auch an den Endpunkten für Razor-Seiten verwenden. In Ordnung, mit all dem, was gesagt und erledigt ist, werden wir einfach einen schnellen Check-in durchführen und immer sicherstellen, dass Ihre Nachricht klar genug ist. Und dann können wir es tun und sinken. Wenn wir jetzt wiederkommen, werden wir uns mit etwas mehr Authentifizierung und Autorisierung befassen, jedoch im Kontext der Identität. Wir werden uns also anschauen, wie wir die Login-Funktionalität unterstützen. Passwort vergessen, all diese wunderbaren Funktionen. 15. Login Grundlagen – -: Alles klar Leute, also kommen wir aus den Fersen oder richten unsere Vertriebsfunktionalität ein. Und in diesem Abschnitt werden wir uns irgendwie auf die Authentifizierung konzentrieren. Das ist also das Einrichten des Logins, die Passwortsicherheit, Betrachten der Sitzungsverwaltung oder das Cookie-Management unter Verwendung der Identität. All diese wunderbaren Dinge, die wir uns ansehen werden. Ich werde mir die Bibliotheken von Drittanbietern genauer ansehen, die der Benutzermanager unter dem Anmeldemonitor hat, und wie wir die Multi-Faktor-Authentifizierung implementieren können. Also bleib hier, wir werden viel Spaß in diesem Abschnitt haben. 16. Implement: Ordnung Leute, also werden wir uns in dieser Lektion die Login-Funktionalität ansehen. Also haben wir bereits eine Distribution auf Sachen eingerichtet und wir können einen Benutzer in unseren Ladengeschäften erstellen lassen, nein, wir müssen tatsächlich den Login machen. Also vorher, nein, wir hatten den Login tatsächlich mit unserer benutzerdefinierten Anmeldeseite implementiert und unser benutzerdefinierter Code, dem wir sicher sind, dass wir beide zustimmen können, war nicht sehr sicher. Was es getan hat, war, die Eingabe aus dem Formular zu akzeptieren und wir testen sie manuell gegen etwas, von dem wir glauben, dass es richtig wäre. Wollen wir Recht haben? Offensichtlich werden Verwendungen in einer realen Situation in der Datenbank gespeichert, wenn sie zur Anmeldung kommen, sie werden sich im Aufwärtstrend authentifizieren. Und wir müssen ihre Existenz und die Richtigkeit ihres Passworts in der Datenbank überprüfen. Was wir also tun werden, um einen echten Anmeldemechanismus zu erhalten, ist, sich auf den Login-Code zu verlassen, der uns von der Identität zur Verfügung gestellt wird. So können wir mit der rechten Maustaste auf einen Kegel klicken, der dem ähnelt, was wir mit unserer Registrierungsseite gemacht haben, und wir können zu einem neuen abgenutzten Artikel wechseln. Dann sprangen wir auf die Identität, sexuelle Identität. Und nachdem es seine Verarbeitung abgeschlossen hat und wir diesen Dialog erhalten haben, wählen wir die Anmeldeseite aus. Also haben wir Login und naja, Logo, also wähle ich einfach beides aus. In Ordnung, sobald ich das mache, wissen wir, dass wir unsere Datenkontexte auswählen und dann auf Hinzufügen klicken. In Ordnung, also stoße ich auf diesen Fehler. Vielleicht stößt du nicht darauf. Aber wenn Sie darauf stoßen, werden wir es gemeinsam durcharbeiten. Nein, ich denke, dieser Fehler tritt aufgrund der potenziellen Versionslücke auf, die ich zuvor erwähnt hätte. Also sage ich das einfach ab. Und wir können zum NuGet-Paketmanager für dieses Webprojekt springen. Und wenn wir uns gut ansehen, bin ich mir ziemlich sicher, dass sie hier einige Updates geben werden. Das ist unser Ausstehendes. Alles klar. Die Sache ist also, dass, wenn die Versionierung zwischen einigen Paketen falsch ausgerichtet ist, alles andere außer Ausrichtung ist . Wenn ich mich nicht irre, ist wenigstens einer davon „Da wir gehen“. Also wurde dieser aufgerüstet. Ich hab's nicht persönlich gemacht. Manchmal passiert es. Ich weiß es nicht. So wird er danach installiert, aber trotzdem werden wir es so lösen. Also wähle ich einfach alle Pakete aus und lasse sie alle upgraden. Und was ich tatsächlich hätte tun können, war einfach gut für die gesamte Lösung, um sicherzustellen, dass sich alle Projekte auf derselben Seite befinden. Also ein wenig außerhalb des Themas null, aber wir können tatsächlich mit der rechten Maustaste auf die verwaltete Lösung klicken und Pakete für die Lösung abrufen. Und so können wir uns die einzelnen Projekte und die Versionen ansehen , die sie verwenden. Wenn wir also die Liste der Pakete erhalten und auf eines dieser Pakete klicken , sehen Sie die beiden Projekte oder so viele Projekte wie Sie haben. Und wenn es in einem und nicht im anderen ist, werden Sie sehen, dass es nicht installiert ist. Damit Licht jedoch anders ist, sind wir ein Kern, es ist in beiden, aber einer sieht Fünf-Punkte 10. Man sagt, 5.11 ist allgemein gesagt, es ist gut, alles auf dem gleichen Niveau zu haben. Also klicke ich einfach nacheinander auf sie und stelle sicher, dass sie alle in derselben Version sind. Nun ist es einfach, dies auch einfach zu tun, einfach zur CS Bridge-Datei zu gehen. Und ich kann diese einfach auf 11 ändern. Ich weiß also, dass wir leben, was diese sein müssen. Gehen Sie einfach alle durch oder Sie hätten einfach den NuGet-Paketmanager machen können. Und obwohl es so viele Möglichkeiten gibt, aber sobald Sie einen Build gemacht haben und er als erfolgreich gemeldet wurde , als Sie wissen, sind Sie auf dem richtigen Weg. das nach all dem Lassen Sie uns das nach all dem noch einmal versuchen. Also hat ein Koen News die Identitätsgegenstandsidentität abgefeuert. Wählen Sie unsere neuen Seiten und unseren DV-Kontext aus und fügen Sie hinzu. Und wenn all das erledigt ist, haben wir jetzt unsere neuen Seiten für An- und Abmeldezwecke. Werfen wir also einen Blick auf die Anmeldeseite und die gesamte Geld- oder Anmeldeseite, die wir erstellt haben , sieht der Anmeldeseite für Gerüste sehr ähnlich. Außer Sie werden feststellen, dass im Hinblick auf den Benutzermanager ein paar weitere Dienste in den Anmeldemanager injiziert werden Hinblick auf den Benutzermanager ein paar weitere Dienste in den Anmeldemanager , haben wir diese beiden Bibliotheken auf der Registrierungsseite gesehen. Und Sie werden feststellen, dass es hier einige andere Dinge gibt, die wir nicht aufgenommen haben. Letztendlich haben wir das gleiche Eingabemodell, das die E-Mail-Adresse und das Passwort verwendet. Und dann könnte dies geändert werden, wenn Sie einen Benutzernamen und ein Passwort haben möchten, dann werden Sie offensichtlich gefragt, ob der Benutzername der der E-Mail ist, sodass Sie dies ändern können, wenn Sie möchten. Ansonsten haben wir den En-Gedi , der im Grunde wissen will, gibt es eine Fehlermeldung, die ich anzeigen sollte? Nein. Okay, gut. Die Rückgabe-URL lautet und trifft dann Bestimmungen für externe Anmeldebibliotheken oder Anmeldedienste, die möglicherweise aufgenommen wurden. Das ist Facebook und Google usw. Also gehen wir diese noch nicht durch, sondern machen uns darüber Sorgen. Aber auf dem Post, Hier ist, wo mehr Sachen die Magie wirklich passiert. Also auf dem Post machen wir so etwas wie okay, wir wissen über eine Rückgabe-URL und die externen Logins, das ist in Ordnung. Wenn der Modellstatus noch einmal gültig und Gültigkeit ist, basiert auf diesen Attributen sind Annotationen, die das Modell hätte. Wenn alles gültig ist, verwenden wir den Anmeldemanager. Kein Hinweis, dass ich keine Datenbank mit der Bezeichnung erstellt, die nicht einmal eine Datenbank namens art erstellt, nicht explizit, weil der Anmeldemanager voll von Methoden für einen von ihnen ist die Passwort-Anmeldung asynchron. Diese Methode selbst wird also an die E-Mail-Adresse und das angegebene Passwort weitergeleitet. Es wird gehen und die Datenbank in der Tabelle der ASP NET-Benutzer einchecken. Kann ich einen passenden Datensatz finden? Ja, das kann ich. Okay. Nein. Bewaffnet mit der Blume, um sich an mich zu erinnern oder nicht, werden wir den Keks erstellen, oder? Und hat die Person tatsächlich angemeldet. Diese eine Zeile wird also im Grunde alles tun und die ursprüngliche verteidigen. All dies baut den Anspruch auf, richtet diesen Entity-Benutzer, den Prinzipal ein und meldet sich dann an. All dies wird so ziemlich in dieser einen Zeile erfasst und ausgeführt. Alles klar? Dies kann natürlich verlängert werden, wenn Sie mehr Ansprüche oder mehr Dinge haben , die Sie dem Benutzer hinzufügen möchten. Aber letztendlich benutzt du im Allgemeinen aus dem Tellerrand, Candace, den Code so wie er ist, oder? Nein. Nachdem es versucht hat, das Cookie zu erstellen und versucht, das ganze Prinzip zu erfüllen und sich in den HTTP-Kontexten anzumelden, wird es zurückkehren, ob es erfolgreich war oder nicht. Wenn es also erfolgreich war, melden wir uns bei dem Logger an, der später eingerichtet wird, dass dieser Benutzer angemeldet wurde. Und dann leiten wir um. Wenn es eine Zwei-Faktor-Authentifizierung erfordert, gibt es eine Seite mit einer Identität, die es uns ermöglicht, FA zu erleichtern, wenn sie gesperrt sind, oder? Octo bedeutet also, dass wir tatsächlich nachverfolgen können, ob jemand zu viele Anmeldeversuche hat oder jemand gegen eine Geschäftsregel verstoßen hat und er derzeit nicht auf das System zugreifen kann. Wir können diese Flagge setzen, wenn sie ausgesperrt sind , leiten wir sie an den Strand um, von dem sie wissen, dass sie gesperrt sind, erzählt. Andernfalls zeigen wir nur einen Fehler an, den Sie bis zu einem gewissen Grad anpassen können. Wir möchten nicht zu viele Informationen geben, denn wenn das Passwort aus Argumenten willen falsch war, möchten Sie ihnen nicht etwas Bestimmtes geben, um Ihre gesamte Haltung zu kennen. Es war falsch, all dein Benutzername war falsch, denn dann würdest du einem Angreifer mindestens 50 Prozent der Gleichung geben, würde genau wissen, was falsch ist. Dies ist also eine sehr generische Meldung, um einen ungültigen Anmeldeversuch zu sehen. Noch einmal können Sie diese Kugeln in gutem Geschmack und Sicherheit behandeln. Und dann geben wir letztendlich die Seite zurück. Wenn Sie also so weit kommen, bedeutet das, dass hier oben etwas fehlgeschlagen ist, denn wenn es gültig wäre, hätte es umgeleitet. Und beachten Sie direkt kalorienarm, da Sie unsere Risikoumleitung nicht auf eine externe Website umleiten möchten . Also waren wir lokal zur Rückgabe-URL umgeleitet. Das ist ein anderer fühlt sich vor möglichen Umleitungsangriffen sicher. Jetzt können wir das alte testen, was ich tun wollte, ist zu dem Shared zu springen und zum Login-Teil zu gehen. Und wir werden die URL für den Login ändern, damit Ihre URL nicht mehr wie das Register 1 aussieht. Stattdessen sehe ich in einem Register, dass ein Login angezeigt wird. Und anstatt sich noch einmal zu registrieren, heißt es Login. Alles klar, jetzt gehen wir zur Kontoanmeldung. Und genauso können wir sie für die Logos einfach auf der Logo-Seite lesen. Lassen Sie uns das also für einen Dreh machen. Und wenn ich auf die Anmeldeseite komme und versuche, mich mit meinen vorhandenen Mitbesitz anzumelden, erhalte ich ungültige Anmeldeversuche. Nein, das ist kein sehr offensichtlicher Fehler und wir müssen gehen, durch diesen gehen. Lassen Sie mich genau erklären, warum das passiert. So wie der Manager angemeldet ist, lassen Sie mich zum Login springen. Die Art und Weise, wie der Manager oder diese Methode funktioniert, besteht darin, dass es einen Benutzernamen und ein Passwort benötigt. vielen Fällen, in denen wir an diesen Punkt kommen, könnten wir uns verwechseln, warum funktioniert es nicht? Ich bin eine Ausgabe in die richtige Sache. Denn denken Sie standardmäßig daran, dass die Registrierungsseite E-Mail-Adresse, das Passwort und die Bestätigung aufnahm. Verwenden Sie dann diesen E-Mail-Adresswert sowohl als E-Mail-Adresse als auch als Benutzernamenwert. Das ist also das Ergebnis des Box-Verhaltens. Wenn es in der Datenbank gespeichert wurde, wird in E-Mail und Benutzername daher nicht der gleiche Wert angezeigt wird in E-Mail und Benutzername daher nicht der gleiche Wert da es sich um dieselbe E-Mail-Adresse handelte, die für beide verwendet wurde und verwendet wurde. Seit wir jedoch aufgetaucht sind, haben wir ein Feld für Benutzernamen eingefügt. Wir nehmen also einen anderen Benutzernamen als E-Mail an. Das heißt, wenn die Methode „Anmelden mit Passwort ac“ aufgerufen wird, wie wir hier sehen, wird die E-Mail-Adresse übergeben, die wir in das Feld „Benutzername“ eingeben. Alles klar, deshalb bekommen wir unsere Füße und das ist völlig nicht offensichtlich. Also zeige ich nur auf diesen Zeh, weil er mich ein paar Mal erwischt hat. Also hoffe ich, dass das jemandem da draußen hilft. Was wir also noch einmal tun müssen, müssen wir uns darüber einigen, wie wir möchten, dass sich unsere Benutzer anmelden können. Und hier wird die Anpassung an Geschäftsregeln bestimmen, welche Erweiterungen Sie wahrscheinlich einsetzen, im Vergleich zu der Art und Weise, wie Sie Ihre Logik ganz aufschreiben. Wenn Sie also dieses E-Mail-Authentifizierungsmodell wünschen, können Sie genauso gut E-Mail wie Benutzernamen und Passwort hinterlassen. Andernfalls müssen Sie möglicherweise die E-Mail verwenden, um herauszufinden, ob ein Benutzerdatensatz vorhanden ist. Wenn dies der Fall ist, finden Sie den Benutzernamen in diesem Datensatz. Sie würden die E-Mail bereitstellen, aber dann finden Sie den Benutzernamen, um diese Methode zu verwenden. Oder in unserem Fall können wir nur das Eingabemodell ändern, von einer E-Mail zu fragen, um nur nach dem Benutzernamen zu fragen, damit ich den Benutzernamen sehen kann. Und ich möchte nicht, dass es ein E-Mail-Adressfeld ist, oder? Also, ähm, diese Refactorierung dieses E-Mail-Adressfeldes und die Bearbeitung woanders. Deshalb fragen wir den Benutzer nach seinem Benutzernamen und seinem Passwort, seiner E-Mail-Adresse und seinem Passwort. Also auf dem Formular selbst natürlich nach dem Aktualisieren der Referenzen. Okay, los geht's. Jetzt, da wir das gemacht haben, können wir dieses Login erneut versuchen. Jetzt frage ich nach Benutzernamen und Passwort. Und wenn ich auf Login klicke, sehen wir hier, dass wir angemeldet sind und wir erhalten unseren Begrüßungsbildschirm. Ordnung, also funktioniert es genauso, wie der Anmeldemanager alles für uns erledigt. Es erhebt die Ansprüche und alles. Also siehst du hier, wir sehen diesen Benutzernamen. Alles klar? Nein, der Logo-Button navigiert zur Logo-Seite, die uns dann auffordert, hier zu klicken, um sich anzumelden. Also werde ich dieses Element und die Kunst gut untersuchen, tut mir leid, anstatt das Element zu inspizieren, während ich auf die Seite springe. Auf der Logo-Seite wird es also eine Farm haben. Das ist im Grunde genommen Ziel hier. Und schreibe einen Beitrag in diesem Bereich mit der Rückgabe-URL der Seite. Natürlich ist es ein Beitrag und was es heißt hier klicken um sich anzumelden. Mit anderen Worten, ich bin mir sicher, dass Sie unserem Benutzer nicht unbedingt sagen möchten, gehen Sie zur Logo-Seite und klicken Sie dann hier, um sich anzumelden. Wenn sie auf das Logo klicken, möchten Sie sie aussperren? Was wir also tun können, ist , anstatt den ganzen Ansatz zu verfolgen, zur Logo-Seite zu navigieren, ich kann mir dieses Formular ausleihen, zu meinem Login-Teil zurückkehren und dann dieses Formular anstelle des Navigationselements zum Logo verwenden seite. Also dieser Button, jetzt sehen wir nur Logos. Wenn sie auf diese Schaltfläche klicken, werden die Anfragen tatsächlich an das Logo gesendet. Also entferne ich einfach das Anker-Tag, das ich anfangs hatte. Und im Allgemeinen werden Sie diese Art von Formular-Setup sehen. Auf der Logo-Seite selbst haben Sie also den En-Gedi, der die Tonhöhe senkt. Sicher, aber dann passiert das, wenn wir auf Abmelden klicken. Also weist der Anmeldemanager ironischerweise alt zu, oder? Anmeldemanager ist also die Bibliothek und Cenotes async ist die Methode, die wissen wird, okay, das ist der angemeldete Benutzer hat lokalen Schlüssel getötet, alles beendet und seine Sitzung auf der Website beendet. Es ist also ähnlich oder es tut im Grunde das, was wir hier manuell gemacht haben. Alles klar. Das ist es, was die Legos-Aktion zu Unternehmen für uns kommt. Ich gehe zurück in unsere Bewerbung. Und dieses Mal, wenn ich auf „Abmelden“ klicke, werden es tatsächlich nur Logos geben und uns wissen lassen, dass wir uns erfolgreich abgemeldet haben. Also brauchen wir diesen Logo-pH-Wert nicht einmal, denn denken Sie daran, dass diese Identitätsdateien tatsächlich vorhanden sind Wenn wir sie außer Kraft setzen wollen, können wir sie gerüsten und mit ihnen interagieren, wie wir es tun würden habe für den Login und für das Register getan. nun nach dem Entfernen der Logodatei Wenn wir nun nach dem Entfernen der Logodatei zu unserem Login-Teil zurückkehren, können wir dies nachrüsten, um etwas mehr so auszusehen, wie wir es erwarten könnten, wie wir alle Identitätsdaten aus der Projekterstellung gerüstet haben. Im Allgemeinen hätten Sie also die Injektion des Anmeldemanagers in Bezug auf die regierende Benutzerklasse gesehen , oder? Und ja, Sie haben gerade so in die Controller oder auf der Seite eingespritzt , die wir ganz gesehen haben, die Abhängigkeitsinjektion durchgeführt haben. Dies wird ausschließlich in eine Ansicht injiziert. Und dann diese if-Anweisung, anstatt user.name-Identität zu sagen, die authentifiziert ist und in Manager Benutzer schleift. Und dann würde es einfach das ganze Anspruchsobjekt oder das Hauptobjekt des Benutzers brauchen, oder? Die rote Linie ist da, weil wir einige Einfuhren anzeigen müssen. Und diese Ansicht importiert Dateien ist eine gute globale Möglichkeit, Anweisungen in Ihre Ansichten und Partials zu integrieren. Indem Sie also Microsoft Dot ASP NET Core Dots Identity in die View-Eingabedatei einfügen. Überall wo Sie diesen Sand im Manager benötigen, wird der User Manager injiziert. Es kann ohne Mutter geschehen, oder? Also wenn wir uns teilweise anmelden werden, sehen wir, okay, jetzt haben wir den Benutzer draußen. So können wir diesen Prozess für Benutzer wiederholen, bei denen wir zu View-Eingaben zurückkehren, und dieses Mal fügen wir die using-Anweisung für den Namespace hinzu , in dem sich unsere Benutzerdatei befindet, und das ist eine Entitäten, die im klassifizierten Datenprojekt enthalten ist. Sobald Sie das getan haben, werden wir feststellen, dass der Benutzer keinen Fehler mehr gibt und ich erfolgreich erstellen kann. Jetzt, da ist es für den Halt, die grundlegende Login-Funktionalität funktioniert. Wenn wir wiederkommen, werden wir uns zusätzliche Sicherheit und Kontrollen und Guthaben ansehen , die wir in diesem gesamten Prozess in unsere eigene Faust stellen können. 17. Handle Logout Flow: Alles klar Leute, das ist ein sehr einfaches Video und es geht nur darum , mit dem umzugehen, was danach passiert Logo. Wir haben also gesehen, dass der Holzeinschlag Indien das einfach tun würde. Wir klicken auf Abmelden geht tatsächlich zu unserer Logo-Seite. Wir wollen uns nicht unbedingt einfach auf die Seite setzen. Der Benutzer hat wahrscheinlich kein Interesse daran, einen Bart zu sehen und zu sehen, dass ich eine Notiz liebe. Sie würden sie wahrscheinlich zurück zur Homepage navigieren wollen. An diesem Punkt würden Sie wahrscheinlich die Logo-Seite abreißen wollen. Lassen Sie mich das einfach schnell machen. Zeitalter. Sie haben Artikel, Identität abgefeuert, Logos gefunden und Kontexte ausgewählt und dann wissen, wann dieser pH-Überschuss auftaucht. Scrollen Logos gefunden und Kontexte ausgewählt und dann wissen, Sie einfach nach unten zu dem, was im On-Post passiert. Also bei Beiträgen senden wir den ganzen Benutzer und dann prüfen wir, ob wir Ihr Land drehen. Wenn einer da ist, leiten wir zu dieser Rückgabe-URL um. Ansonsten haben wir Erich auf der Seite gelesen. Also sehen wir die Seite weiter, anstatt auf eine andere Seite zu gehen. Offensichtlich kommt dies als „No-Nein“ zurück. Wenn ich zum Einloggen springe, sehen wir tatsächlich in der Form, die wir zusammengestellt hatten. Denken Sie daran, dass wir das in eine Farm gekaufte Logo umgewandelt hatten. Und es sendet sich nur an diese onPause-Methode. Es sendet eine Rückgabe-URL, die die Homepage sein sollte. So eigenartig genug, dass das nicht zurückkommt, aber das ist in Ordnung. Was ich tun werde, ist einfach unsere eigenen zu arbeiten. Denken Sie also daran, dass wir den Flow sowieso kontrollieren. Es verhält sich also nicht Hall, wir wollen, was ich tun werde, ist einfach alles zu ändern, was nach Logos passiert. Anstatt sich also auf eine Rückgabe-URL zu verlassen, von der wir wissen, dass sie die Homepage sein soll. Jedenfalls. Ich werde nur sagen, zurück lokale Weiterleitung und zeige dann auf das, was ich weiß, dass es meine Home-URL ist, die von diesem Zeitpunkt aus Tilde und dann Schrägstrich sein würde. Richtig. Nachdem ich das gemacht habe, testen wir es und sehen, was passiert. Also bin ich hier und ich bin eingeloggt. Lass mich sehen, was passiert, wenn ich auf Logos klicke. Wenn ich Logos habe, siehst du, dass ich auf der Homepage bin und mir das Recht nicht mehr erlaubt ist. Versuchen wir es also noch einmal. Ich melde mich an und gehe dann zur Anzeigenseite und melde mich dann aus. Das heißt also, nachdem ein Logo wissen sollte, sehen Sie, was auf der Homepage ist. Und da sind wir los. So kontrollierst du diesen Lavastrom. 18. Password: Alles klar Leute, also sind wir zurück und wir werden uns an dieser Stelle die Funktionalität des Passworts vergessen ansehen. Denken Sie also daran, dass wenn jemand normalerweise versucht, sich anzumelden und vielleicht, nachdem er ein paar Mal fehlgeschlagen frustriert sein wird und dann möchte er bisher gefördert oder sein Passwort zurücksetzen, oder? Natürlich, der Wortlaut hier, du kannst es ändern. Sie können die Anmeldeseite nach Belieben ändern. Wenn ich jedoch auf Passwort vergessen klicke, beachte, dass es zu einer Seite namens Passwort vergessen navigiert. Wir haben uns auf einer solchen Seite überhaupt nicht gedrängt. Aber denken Sie daran, dass alle Identitätsseiten, die tatsächlich dem Button verweilen, gewachsen sind, wenn wir das Wochenende ändern wollen, es immer und über den Kopf gerissen haben, wie wir es wünschen. Aber schauen wir uns an, was aus dem Tellerrand passiert. Also hab dein Passwort vergessen. Bitte geben Sie Ihre E-Mail ein. Ich verwende einfach denselben E-Mail-Adressen-Administrator auf tes.com und setze dann das Passwort zurück. Und das alles. Das typische Verfahren für ein Zurücksetzen des Passworts besteht darin, dass eine E-Mail an die von Ihnen angegebene E-Mail-Adresse gesendet wird. Wenn Sie also Ihren SMTP-Server oder zumindest den SMTP-Client auf Papier bringen, werden Sie feststellen, dass wir diese E-Mail zum Zurücksetzen des Passworts von unserem System erhalten haben. Wenn wir also hier klicken, navigiert es zu einer anderen Seite mit der Aufschrift „Passwort zurücksetzen“ mit diesem Tolkien-Code. Dieser Code sieht sehr ähnlich aus, als wir Oracle-Bones bestätigen mussten. Und dann könnten wir die E-Mail eingeben, unser Passwort eingeben und dann auf Reset klicken. Und dann wird es sagen, okay, es wurde zurückgesetzt. Bitte klicken Sie hier um sich anzumelden. Welchen Punkt sollte ich mich mit dem gleichen Passwort einloggen können , das ich benutzt habe, oder der gleichen Haltung, die ich gerade benutzt habe. Und verzeih mir, ich habe vergessen, dass wir den Benutzernamen verwenden und keine E-Mail. Versuchen wir es also noch einmal. Wir sollten bereit sein zu gehen. Und da sind wir. Okay, das ist also im Grunde das, womit wir aus der Box kommen, haben Sie Ihr Passwort vergessen. Nichts zu ausgefallenes, aber was wir tun werden, ist weiterzumachen und es zu zerreißen, damit wir zumindest sehen können, was hinter den Kulissen passiert. Wir kennen also die Vorgehensweise, neue Identität des abgewickelten Gegenstands. Und nachdem es fertig ist, wählen wir aus, was Sie wollen. Also möchte ich die Passwortbestätigung vergessen. Ich möchte auch Passwort vergessen und Passwort zurücksetzen. In Ordnung, das sind also die drei Seiten, die an diesem Workflow beteiligt waren. Ich weiß es einfach. Also und das mache ich alles. Sie war ein Kontext. Dann sehe ich, dass meine neuen Seiten erscheinen. Schauen wir uns zuerst an, was das vergessene Passwort tut. Es nimmt also standardmäßig den E-Mail-Absender auf. Da wir diese Implementierung haben, mussten wir nicht einmal hierher kommen und irgendetwas anderes tun. Es weiß nur, was mit dem System zu tun ist, ist konfiguriert. Wo auch immer Sie diesen E-Mail-Absender benötigen, müssen Sie nur entsprechend injiziert werden. Also was es beim Post macht, und ich sehe, dass ESI mein Passwort zurücksetzen wollte und auf diese Zurücksetzen klickt, es wird dann sehen, ob dieser Benutzer im System existiert. Wir stellen also per E-Mail fest, ob der Benutzer null ist oder wenn der Benutzer seine E-Mail noch nicht bestätigt hat , lesen wir Anweisungen, um die Passwortbestätigung vergessen zu haben. Alles klar. Dies geschieht also im Grunde genommen, weil es Ihnen keinen Hinweis geben möchte, dass wir wissen, dass Sie das System wahrscheinlich im Trend bringen, weil es sein könnte, dass Sie fälschlicherweise ihre eigene E-Mail eingeben. Aber das bedeutet, dass wir es nicht im System gefunden haben oder Sie versuchen, Ihr Passwort zu vergessen, aber Sie haben es nicht bestätigt. Wir werden Ihnen immer noch den Eindruck erwecken, dass es Hoffnung für Sie gibt. Wenn das Szenario stimmt, gibt es wirklich keine Hoffnung, aber diese Umleitung deutet auf Hoffnung hin. An dieser Stelle könntest du also eine Entscheidung treffen. Sie könnten ihnen wahrscheinlich haptisches Feedback geben, um zu sehen ob Sie versuchen, Ihr Passwort zu vergessen, und Sie sind noch nicht bestätigt. Bitte gehen Sie und bestätigen Sie die DCG-E-Mail und bestätigen Sie. Also diese weiß der Benutzer, dass Oh, es tut mir leid, ich habe einen Schritt verpasst und deshalb kann ich nicht ins System kommen. Das liegt also an dir. Aber das ist nur das Standardverhalten. Weiter aber geht es weiter und generiert den Code. Dies passiert also, wenn wir den Benutzer und das System angerufen haben. Wir generieren den Code. Sie werden also sehen, dass es dem, was in diesem Register passiert, sehr ähnlich aussieht. Bestätigungsbits, oder? Es hat also den Code auf veränderbar generiert. Sieh dir den entscheidenden Unterschied an. Die URL dafür ist „E-Mail bestätigen“ gewonnen, während die URL für das Zurücksetzen des Passworts vorgesehen ist. Und eine andere Sache ist, dass der Tolkien, den es generiert, Tolkien zum Zurücksetzen des Passworts ist. Während es im Register ein E-Mail-Bestätigungs-Token generiert wird. Wirklich darauf hinweisen, dass ein oder zwei, weil ich in der Vergangenheit abwesend war, alles harte Ignoranz sind. Den Code von einem kopiert und den anderen gesetzt und konnte nicht. Ich habe eine Stunde damit verbracht herauszufinden, warum dieser Token-Code dies nicht tun würde. Lassen Sie mich im System fortfahren. liegt daran, dass sie zwei verschiedene Mechanismen sind die durch verschiedene Hashing-Mechanismen verwendet werden. Also wollte ich nur auf diesen Zeh hinweisen, falls du das vorher nicht wirklich bemerkt hast. Dies ist also eine E-Mail-Bestätigung und diese ist das Zurücksetzen des Passworts. Alles klar. Ich bin mir sicher, dass es noch andere gibt. Wenn Sie einfach nur den Verwaltungs- oder Kontrollraum nutzen und wahrscheinlich Tolkien stereotypisieren, sehen Sie alle verschiedenen Optionen, die in der Passwortsicherheitskette angezeigt werden könnten , die in der Passwortsicherheitskette angezeigt , GMail, changeful, number usw. usw. cetera. Basierend auf der Situation, in der Sie möglicherweise einen Tolkien-Code zur Bestätigung generieren müssen, wird der höchstwahrscheinlich einen für Sie bereit sein. In Ordnung? Nachdem es das Zurücksetzen des Passworts, Tolkien, generiert geht es dann weiter und generiert diese URL erneut zum Reset-Passwort. Und dann sendet es dieses E-Mail-Tool, unabhängig von der E-Mail-Adresse, die sich in der Datei dieses Benutzers befindet, dann geht es zum Kennwortbestätigungsbildschirm. Also die Passwortbestätigung oder die Passwortbestätigung vergessen, alles, was Sie wissen, dass Sie Ihre E-Mails überprüfen, damit Sie dies ändern, Spaß machen und es ein bisschen benutzerfreundlicher machen können . Das liegt an dir. Wieder einmal konzentrieren wir uns nicht auf die Ästhetik, haben uns nur wirklich auf die Arbeitsfläche aller unserer Authentifizierungsstücke konzentriert. Dann haben wir auf dem Passwort zurücksetzen ein Formular, in dem Sie nach Ihrer E-Mail-Adresse gefragt werden, um Ihr Passwort zu bestätigen, dann wird das Reset-Passwort nach dem Absenden per E-Mail suchen angezeigt. Wenn der Benutzer null ist, was bedeutet, dass wir ihn nicht gefunden haben. Wir leiten sie zum Bestätigungsbildschirm zum Zurücksetzen des Passworts weiter. Also geben wir ihnen noch einmal Hoffnung, damit du immer herausfinden kannst , wie du damit umgehen willst, oder? Andernfalls möchten wir ihren Datensatz in der Datenbank finden und dann ihre Passwörter zurücksetzen. Ist es so einfach, einen Manager Dot Reset, Boss oder die Senke zu verwenden? Wir bekommen den Benutzer, wir kennen den Token-Code basierend auf der URL und geben dann das neue Passwort an. Und sobald das erfolgreich ist, zeigen wir die Bestätigungsseite an. Bestätigungsseite navigieren Sie natürlich einfach zu unseren Vorschlagen, dass Sie sich anmelden. Alles klar? Wieder einmal müssen Sie diese nicht einmal abbauen, es sei denn, Sie beabsichtigen, die Art und Weise zu ändern, wie sie angelegt sind. Und wenn Sie den Workflow ändern möchten, wie wir es für das Passwort vergessen haben. Das ist es also wirklich, um die Funktionalität für das Vergessen des Passworts zu implementieren. Und für mich besteht der Kern darin, diesen E-Mail-Dienst zum Laufen zu bringen , der da ist. Sie würden nicht einmal bemerken, dass die Dinge nur härter funktionieren. Angenommen, Geschäft. 19. Konto-: Alles klar Leute, also setzen wir unsere Reise durch die Identitätsbibliothek fort und alles, was sie uns bietet. Und in dieser Lektion werden wir diese Sperrfunktion implementieren. Dies ist ein guter Weg, um die Sicherheit zu verbessern, indem ein Benutzer, den er eingeben, zu oft empfohlen wird. Und es ist tatsächlich ein großer Hügel, der Brute-Force-Angriffe gewinnt. Wenn ein Angreifer vielleicht einen Benutzernamen oder ein Passwort hat und wiederholt versucht, mit verschiedenen potenziell falschen Passwörtern ins System zu gelangen. Was wir also tun werden, ist die Optionen hier zu ändern, damit wir wissen, dass wir die Möglichkeit haben, die Passwortsicherheit zu aktivieren. Wenn wir ein wenig weiter schauen, können wir Optionen hinzufügen dot Lakota. Und dann können wir sehen, ob es neuen Benutzern erlaubt ist. Was ist die Standardzeitspanne für die maximal fehlgeschlagenen Zugriffsversuche. Also habe ich ja gesagt, es ist neuen Benutzern erlaubt. Ich habe die Standardzeitspanne auf Zeitspanne von fünf Minuten. Natürlich bestimmen Geschäftsregeln, was Sie tun und die maximale Anzahl fehlgeschlagener Versuche beträgt drei. Nach drei fehlgeschlagenen Versuchen sperrten wir sie 45 Minuten ein. Und es ist uns egal, ob Sie ein neuer Benutzer sind, nicht. Die Option ist also da. Aber wenn ich zum Login gehe, wirst du sehen, dass der Code, unsere eigenen Haare die Optionen nicht ergänzen. In der asynchrone Methode „Sand in Manager“ -Punkt-Passwort-Anmeldung sehen Sie hier lokal bei Fehler standardmäßig ist, durch das NEIN, dies wurde generiert, es wurde auf false gesetzt. Wir müssen dies also in wahr ändern, um es wissen zu lassen , dass wir möchten, dass Sie streng handeln. Nein, wir können diesen Teil irgendwie durcheinander bringen, um vielleicht ein bisschen mehr zu tun. Alles klar, was wollen wir tun, wenn der Benutzer gesperrt ist? An diesem Punkt, wenn sie dies dreimal tun, werden sie das Ergebnis sagen, dass LaCo, diese Person, wenn sie gesperrte Transportkisten sind, auf einen lokalen pH-Wert umgeleitet wird , der wahrscheinlich nur hoch wird, Sie sind ausgesperrt. Warte ein paar Augenblicke. Wir können immer fesseln, dass Patienten sehen, was genau darauf angezeigt wird. Aber ohne es zu gerüsten, werden wir unsere E-Mail-Absender injizieren. Die Sache daran ist, dass Sie Ihrem Benutzer mitteilen möchten , dass er gesperrt wurde. Also injizieren wir einfach den Absender per E-Mail. Und der schnelle Weg, dies zu tun, besteht darin, es in den Konstruktor zu setzen, dann Steuerpunkte zu verwenden und dann die Felder zugewiesene Felder erstellen zu lassen und dann die Benennungskonvention zu befolgen. Wir verwenden einfach den Unterstrich für den E-Mail-Absender. Da sind wir los. Dann ist das Ergebnis gesperrt, und es wird gesagt, dass wir ein CSV-Protokoll haben werden, dass das Konto gesperrt wurde. Dann gehe ich und suche den Benutzer. Bis jetzt haben wir immer die Benutzerbasis auf der E-Mail-Adresse gefunden. Jetzt kann ich nach Namen finden, welcher den eingegebenen Benutzernamen annimmt, oder? Wenn Sie also mit dem Mauszeiger namentlich über den Fan fahren, sehen Sie, dass er den Benutzernamen haben möchte. Wenn wir also diesen Benutzer feststellen, können wir die E-Mail-Adresse nicht abrufen. Dieser Schritt ist also optional, wenn Sie sich dafür entscheiden , diese E-Mail als Benutzernamen und E-Mail-Adresse zu routinieren, wenn Sie eine Routine wählen, die diesen zusätzlichen Schritt nicht ausführen müsste. Aber weil wir uns mit dem Benutzernamen anmelden, muss ich an dieser Stelle herausfinden, was das ist? Ich muss die Benutzerdatensätze finden. Ich kann die E-Mail-Adresse erhalten, um das E-Mail-Tool zu senden. Also bekomme ich nur meinen E-Mail-Absender, sende diesen E-Mail-Betreff und dann HML-Nachricht, damit der Betreff gesperrt ist, eine Kegelinformation, was auch immer du willst, die B unterliegt. Und dann sagt meine E-Mail, dass du hast wurde für zwei Minuten ungültige Versuche von Ihrem Konto gesperrt . Wenn dies nicht der Fall war, setzen Sie bitte Ihr Passwort zurück, da dies möglicherweise ein Verstoß gewesen sein könnte. Natürlich kann Ihre Botschaft so klar sein, wie Sie es benötigen, um den Benutzer wissen zu lassen, dass dies mit seinen Zapfen passiert. Und dann können Sie wissen, dass Sie diesen Benutzer auf das vergessene Passwort oder Bucks auf die Homepage oder auf eine andere Seite umleiten , nur um gesperrt zu sehen, was auch immer es ist, Sie können das vollständig feststellen. Das ist also mein Flow. Nur um Ihnen eine Vorstellung von den Möglichkeiten zu diesem Zeitpunkt zu geben. Was ich jetzt tun werde, ist das auszuprobieren. Also werde ich auf dem Anmeldebildschirm nur das Passwort abschlachten, das ich kenne. Und während ich das mache, gehe ich zur Datenbank und suche nach der Tabelle der Erdnussbenutzer. Und dann scrolle ich nach rechts, wo Sie lokale Lakota aktivieren und auf Feldkegel zugreifen werden. In Ordnung, damit dieser Kegel bei jedem fehlgeschlagenen Versuch inkrementieren soll. Das ist also Versuch Nummer eins. Alles klar? Und wenn ich dann diese Tabelle aktualisiere und dann einen Blick darauf werfe, werden Sie hier sehen, dass der Feldstrom um eins gestiegen ist. Also fühle ich mich einfach noch zwei Mal absichtlich. Und mal sehen, was passiert. Das ist also, dass ich auf das vergessene Passwort umgeleitet werde. Wenn ich zurück in die Datenbank gehe und schaue, nein, wirst du sehen, dass Maya Cone sagt, dass ich Laktose war. Also aktiviere Lakota das, stimmt? Ja. Und ich wurde ausgesperrt, weil kein Lockout-Ende einen Wert hat. Dieser Wert ist also im Grunde die Zeit von nein, basierend auf der Zeitspanne, die ich sagte, was waren, fünf Minuten. Und wenn wir dann unseren SMTP-Server oder Client oder andere überprüfen, werden wir sehen, dass wir die E-Mail haben, die besagt, dass es keinen Verstoß gegeben hat. Natürlich könnten wir dafür jetzt einfach das ganze Passwort vergessen machen, den Link generieren und diesen Link im Passwort senden , damit der Angreifer hierher weitergeleitet wird. Und selbst wenn sie versucht haben, die E-Mail-Adresse erneut einzugeben und zu übermitteln, fragen wir an diesem Punkt nach der E-Mail-Adresse, müssen sich jedoch mit einem Benutzernamen anmelden. Was auch immer es ist, die Dynamik, die der Angreifer ist, wird genau dort gestoppt. Sie können mit nichts fortfahren. Aber dann würde der Benutzer tatsächlich die E-Mails erhalten, um das Passwort zurückzusetzen, oder wie gesagt, dieses Original, das diesem Link folgt, um Ihr Passwort zurückzusetzen. Wie setzen wir das rein? An dieser Stelle können sie all das immer tun und in der Lage sein, ihr eigenes Schicksal zu bewältigen. Das sind also kleine Ideen. Noch einmal zeige ich Ihnen nur, wozu das System fähig ist. Die tatsächliche Implementierung bezieht sich auf die Anforderungen Ihres Unternehmens. 20. Zwei-Faktor-Authentisierung: Alles klar, in dieser Lektion werden wir uns Aktivierung der Zwei-Faktor-Authentifizierung befassen. Also Zwei-Faktor-Authentifizierung in den meisten Systemen, zumindest dass dieses Mal wirklich optional ist. Einige Fälle machen es in diesem Tempo oder zumindest sofort obligatorisch , wir können es für den Benutzer optional machen. Und sie können ihr Benutzerkonto einzahlen und dieses aktivieren oder deaktivieren. Der erste Schritt in unserem Einsatz an dieser Bewegung oder dieser Bewegung besteht also darin, den Link einzurichten, um zur Seite Verwalten für den Benutzer zu gelangen. Also der ursprüngliche Euro, der nur eine URL war, die willkommen war. Der Benutzername wird nicht nachgerüstet sein, um C is B Gebietsidentität zu SBP zu gehen, einen Co-Manage-Index, und der Titel ist Kilometerstand. Das ist in Ordnung. Und dann bedeutet die Textur das Gleiche. Mal sehen, was wir bekommen, wenn wir das machen. Nach dem Einloggen können wir immer einfach auf den Administrator klicken, wissen, dass es sich um eine URL handelt und wir würden zur Verwaltung navigiert werden, sagen wir einem Management-Panel für den Benutzer. Natürlich kann er die Reden gerüsteten und um zu wissen, was zu zerfallen ist, muss man nur in die URL schauen, um zu sehen, was die Seitennamen sind. In Ordnung, aber wenn er diese abgewickelt hat, können Sie sie ändern, damit der Benutzer für sein eigenes Profil verantwortlich sein kann. An dieser Stelle können sie ihre E-Mail aktualisieren, ihr Passwort nach Belieben ändern und die Zwei-Faktor-Authentifizierung aktivieren. Und diese Registerkarte ermöglicht es ihnen tatsächlich, ihre eigenen Spalten zu löschen. In Ordnung, damit Sie ihnen erlauben können, all dies zu tun , oder Sie können sie nach Bedarf einschränken. Gehen wir nun zurück zur Zwei-Faktor-Authentifizierungsseite und klicken auf Authentifikator-App. Und jetzt wird uns die Anleitung vorgelegt. Das sieht der Benutzer also aus dem Tellerrand heraus. Die Identität, mit der wir mit der Zwei-Faktor-Authentifizierung arbeiten, die uns von Microsoft Authenticator oder Google authentifiziert wird Microsoft Authenticator oder Google authentifiziert sowohl für Android- als auch für iOS-Geräte verfügbar. Jetzt habe ich die Apps bereits auf meinem Handy. Wenn Sie sich also auf diesen Weg wagen möchten, und viel weiter, als ich vorschlage, holen Sie sich eines für Ihr Telefon. Die nächste Anweisung würde sagen, scannen den QR-Code oder geben Sie diesen Schlüssel in Ihren Zwei-Faktor-Off ein. Und dann werden sie zu einer Dokumentation darüber navigieren, wie der QR-Code funktioniert. Also werden wir das tatsächlich zusammen machen. Die Dokumentation für mich ist also ziemlich einfach, wir müssen diese Bibliothek in unser Projekt integrieren. Wenn ich also auf diesen Link klicke, werden wir sehen, dass wir diese Bibliothek herunterladen können. Also mach weiter und lade das herunter. Und dann können wir in unserem Projekt zur Wurzel springen. Und in unserem Ordner erstelle ich einfach ein neues Verzeichnis und nenne es eine Haftung. Natürlich kann es spezifischer sein. Und wir ziehen die beiden JavaScript-Dateien in den Bibliotheksordner. Also brauchen wir QR-Code Dot js. Und wenn Sie den anderen ziehen, ist nur die Vollversion des Minified, oder? Also haben wir QR-Code Dot js. Dann nehmen wir diese JavaScript-Datei oder diesen Code hier oder da und erstellen eine neue Datei namens QR ab.js im Stamm-JS-Ordner. Also folge ich nur den Anweisungen, wie Microsoft mir sagt, ich mache nichts, all die Kunst in der Gegend, aber wir machen das zusammen. Also neues Element, ich möchte eine JavaScript-Datei, die im Internet zu finden ist, ein wenig oder eine JavaScript-Datei. Und ich nenne es so, wie sie vorgeschlagen haben, QR ab.js. Und dann fügen wir das in diese Datei ein. Nachdem wir all das getan haben, werden wir die Seite finden, auf der dieser Torus angezeigt wird, der der Enable Authenticator ist, was eindeutig bedeutet, dass wir diese Seite abgreifen müssen. Also nein, ich ging los, um zu unseren Zapfen zu springen, um hinzuzufügen oder weißt du, die Routine geht schon zur Identität. Und wir werden nach der Seite suchen, einem Doppelpunkt-Schrägstrich, einem Schrägstrich aktivieren Authenticator. Und wie gesagt, viele Seiten, mit denen Sie vielleicht interagieren möchten, wie 12, lade ich sie vielleicht, um sie zu deaktivieren. Wenn sie es aktivieren können, möchten Sie ihnen wahrscheinlich erlauben, es zu deaktivieren. Und dann möchten Sie wahrscheinlich unsere Änderung des Index mit den Navigationseigenschaften verwalten , wissen Sie, solche Sachen, was auch immer Sie tun möchten. Also werde ich einfach weitermachen und diese drei einbeziehen. Ich interagiere vielleicht nicht mit allen von ihnen, aber lass sie abreißen. Dann bekommen wir einen neuen Ordner mit allen neuen Dateien. Also springe ich zu der betreffenden Akte. Und unter diesem Skriptabschnitt fügen wir die neuen Pfade hinzu. Also habe ich das gerade von Microsoft Bulks kopiert. Lassen Sie mich einfach sicherstellen, dass meine Wege sind. Das ist also Slash Lib Slash QR-Code und ich benutze einfach min. Und dann ist dieser Schrägstrich js slash QR. Sie können also immer Control Space verwenden, um dies zusätzlich darunter zu bekommen. Jetzt, da wir das ganze Setup haben, lassen Sie mich versuchen, diese Seite erneut zu laden. Und würdest du dir das ansehen? Und alles, was wir haben einen QR-Code, der angezeigt wird. Natürlich kann er die Seite ändern und diese Treffer entfernen , da wir das nicht mehr brauchen und das möchten wir dem Benutzer mitteilen. Also scanne ich gerade den QR-Code gerade mit meinem Telefon. Ich wünschte, ich könnte dir das in beiden zeigen. Es passiert. Nein. Und dann kann ich den Bestätigungscode so eingeben, wie er sich auf meinem Handy befindet und überprüfen. Und da gehe ich hin. Jetzt habe ich die Zwei-Faktor-Authentifizierung für diesen bestimmten Benutzer aktiviert. Unsere Kegel kennen diese Wiederherstellungszitate, die Sie dem Benutzer wahrscheinlich vorschlagen würden , oder wenn Sie den Hinweis sehen, bewahren Sie sie bitte sicher auf, denn wenn das Gegenteil funktioniert, müssen Sie auf das System gelangen, Sie können diese immer verwenden Codes wiederherstellen, um Zugriff zu erhalten. Jetzt bin ich es, das ist alles. Wenn ich in die Datenbank schaue und mir den Datensatz dieses Benutzers anschaue, werde ich sehen, dass das Zwei-Faktor-aktivierte Flag nicht auf true festgelegt ist. Das bedeutet also, dass wenn wir zum Code für den Anmeldeprozess zurückkehren, etwas passieren wird, wenn wir uns erfolgreich einloggen. Das bedeutet also, dass wir uns erfolgreich angemeldet haben. Und dann wird dies sehen, ob eine Zwei-Faktor-Authentifizierung erforderlich und dann umgeleitet wird. Siehst du das? Also nein, das Ergebnis wird nicht zurückkommen. Es ist mir gelungen, zumindest nicht das erste Mal, dass er stetig zurückkommt, da eine Zwei-Faktor-Authentifizierung erforderlich ist, die diese dann an diese neue Anmeldeseite sendet. Melden Sie sich mit zwei FA an, die wir nicht geknackt haben. Wir können Gerüste bauen, aber lassen Sie uns zuerst sehen, was wir aus der Box holen. Also habe ich geladen, geladen und versucht mich erneut mit demselben Benutzer anzumelden. Klicken Sie auf Login, und dann sehen Sie, dass es nicht notwendig ist die neue Seite anzumelden, wobei zwei FA mich zu diesem Zeitpunkt nach meinen Authenticator-Zitaten fragen , die ich oder der Benutzer , wie Sie wissen, der Kontext jetzt bestimmen wird . lege das ein, was mir in meinem Authenticator angezeigt wird. Also gebe ich meinen Code ein und klicke auf Login und dort bin ich angemeldet. Und genau so haben wir die Zwei-Faktor-Authentifizierung aktiviert. Dieser Prozess ist für jemanden, der technisch versiert ist, relativ einfach. Vielleicht möchten Sie darüber nachdenken, wie Sie etwas in Ihrem Unternehmen am besten aktivieren können. Aber der springende Punkt der Zwei-Faktor-Authentifizierung ist etwas, das Sie wissen, und etwas, das Sie haben, oder? Etwas, das Sie wissen, wäre ein Benutzername und ein Passwort, das Standard ist, aber dann könnte jemand anderes wissen, was Sie wissen. Die Wahrscheinlichkeit, dass jemand das hat, was Sie haben, ist jedoch noch stärker reduziert, da dieses Gerät jetzt mehr in Ihrer Position ist. Natürlich würde es viel mehr Anstrengung erfordern, bis jemand aufgrund der Ungleichheit zwischen den beiden Kontaktpunkten auf Sarah Colins zugreifen kann . Es ist nicht narrensicher, aber es ist eine weitere Sicherheits- und Komplexitätsstufe den Anmeldeprozess, die Sie je nach Zielgruppe berücksichtigen oder überdenken möchten. Denken Sie immer daran, dass mehr Sicherheit für manche Menschen eine geringere Benutzerfreundlichkeit bedeutet. In Ordnung, manchmal muss man dieses Gleichgewicht zwischen Benutzerfreundlichkeit und Sicherheit finden. all dem gesagt Was sind Ihre Geschäftsregeln bei all dem gesagt? Stellen Sie sicher, dass Sie die besten Entscheidungen für sich und Ihre Benutzer sowie für die Langlebigkeit und Sicherheit Ihrer Anwendung treffen. Wenn der Benutzer jedoch zu seinen Angeboten zur Verwaltung zurückkehrt und auf die Zwei-Faktor-Authentifizierung klickt, hat er seinen Angeboten zur Verwaltung zurückkehrt und auf die Zwei-Faktor-Authentifizierung klickt, die Möglichkeit, für FA zu deaktivieren. Und das würde alles zurücksetzen. Und es würde wieder alles von Grund auf neu einrichten müssen. Also, weißt du, du gibst ihnen etwas Kraft und sie erlauben ihnen auch, bestimmte Affäre zu belegen. Finden Sie erneut dieses Gleichgewicht zwischen Benutzerfreundlichkeit und Sicherheit. 21. Abschnitts-: Alles klar Leute. Du hast also einen weiteren Meilenstein erreicht. Wir haben uns einige Dinge angeschaut. Man hält fest, um diesen Gerüstfehler selbst zu bekommen. Alles klar. Ich hoffe, du willst nicht begegnen, aber zumindest haben wir es durchgemacht, damit du weißt, was zu tun ist. Wir haben uns auch angesehen, um mehr Seiten zu bauen und unseren eigenen benutzerdefinierten Code zu ersetzen, insbesondere den Login-Code, der sich nur darauf freuen sollte, mit dem Gerüst oder dem Alt of the Box Boilerplate Code zu sehen, dass diese weitaus komplexeren Dinge, aber die Verwendung der Bibliotheken von Drittanbietern, die sehr mächtig sind. Sie sehen also, dass die Anmeldeseite den Anmeldemanager verwendet und all diese anderen Optionen hat, und wir haben einige von ihnen wie mit der Lock Tote aufgestockt, ich bin zurückgegangen und habe mehr CO2 hinzugefügt. Es ist ein Kann pausieren und replizieren, wenn Sie möchten. Aber ich habe den Link zu den Zurücksetzungen des Passworts auf einmal eingefügt, damit es navigiert wird. Sie werden aufgefordert, ihr Passwort per E-Mail zurückzusetzen. All diese wunderbaren Dinge. Wir haben uns auch angesehen, um weitere Seiten zu bauen, sie anzupassen, uns anzusehen, was jedes Bit Code macht, und noch einmal zu verstehen, wie wir sie basierend auf unseren tatsächlichen Bedürfnissen ändern können. Was ich also tun werde, ist, unsere ursprünglichen Authentifizierungsseiten zu entfernen. brauchen wir nicht mehr. Das sind Dinge der Vergangenheit. Und jetzt haben wir robusteren Code und einen weitaus sichereren Code, der unsere Abläufe abwickelt. Wir haben uns auch das ganze Wochenende angeschaut, um die Identitätsfunktionalität zu erweitern. Also haben wir uns die integrierten Optionen angesehen, ja, wir haben mehr für den lokalen Mechanismus hinzugefügt, aber dann haben wir eine benutzerdefinierte Passwortvalidierung hinzugefügt und uns die Datei angeschaut. Wir können weitere kundenspezifische Funktionen hinzufügen, wie wir es benötigen. Und im Grunde genommen was auch immer du als etwas Kostüm hinzufügst. Wenn du also hinzufügst, lass mich vielleicht nur den Validator sehen. Wenn wir also die Rolle des Validators hinzufügen würden , würde er Ihnen tatsächlich sagen, dass Sie es brauchen. Und ich habe den Validator C gerollt, wird Sie immer wissen lassen von welcher Schnittstelle die benutzerdefinierte Klasse, die Sie erstellen werden, erben muss. Du kannst also richtig reinkommen, beklagte, oder? In diesem Fall geben wir den Passwort-Validator ein, oder ich nenne es den Passwort-gültigen Datendienst. Und es erbt nur von i-Passwort über die Daten. Ja, wenn ich den Validator rolle, richtig, hast du ich, diesen Validator ich, das. Sie haben also einige Möglichkeiten. Und basierend auf Ihrem Szenario können Sie diese Schnittstelle einfach verwenden, die Methode implementieren und die gesamte Logik einführen , die Sie zur Erfüllung Ihrer Geschäftsregeln benötigen. Wenn all das gesagt und erledigt ist, checken wir jetzt unseren Code ein. Wie immer machen wir unsere Botschaft so klar wie möglich und dann werden wir einfach weitermachen und synchronisieren. Und ich bleibe hier. Wir werden uns nur auf mehr Fleisch einlassen und mehr Konzepte sind am ganzen Wochenende sicher oder anwendbar. 22. Section: Alles klar Leute, willkommen zurück. Ich bin echt froh, dass du hier bist. Dies bedeutet, dass Sie sich dazu verpflichten , die WHO-Autorisierung und Authentifizierung in Dotnet Core-Anwendungen zu verstehen . Bis zu diesem Zeitpunkt haben wir uns bereits eine gewisse Autorisierung angesehen, bei der wir uns das Foto angeschaut haben. Sie können diesen HTTP-Filter einfach direkt über Ihre Seite oder Ihre Aktion oder Ihren Controller oder sogar Ihre Komponenten platzieren , basierend darauf, welchen Geschmack der Dotnet Core-Anwendung Sie verwenden. Und wenn Sie nur autorisieren sagen, sehen Sie jeden Körper voraus, der versucht, an diesem Endpunkt oder an diesem Ort auf den Inhalt zuzugreifen , um sich zuerst zu authentifizieren, bevor er fortfahren kann. Also wenn wir wollten, ist das auf jeder einzelnen Seite. Wir wissen bereits, dass wir diese Konfiguration haben, die wir beim Start vornehmen können. Es sieht etwas anders aus, wenn Sie eine MVC-Anwendung verwenden. Aber es ist ziemlich dasselbe, wo wir diesen Autor einfach als Filter an jedem einzelnen Ort in unserer Anwendung erzwingen . Wir haben uns auch die Tatsache angesehen, dass wir, wenn es bestimmte Orte gibt die offen lassen wollen, die keine Authentifizierung erfordern, und wir dann nur Schleusentore mit dem Erlauben anonym benötigen. Und das wäre wahrscheinlich weniger als die Anzahl der Standorte, die Sie besitzen möchten. Für mich ist es also immer einfacher, es einfach global zu machen und dann die Ausnahmen einzuführen. Also haben wir uns diese grundlegenden Dinge bereits angeschaut, also werden wir sie in der nächsten Lektion überprüfen. Aber für diesen gesamten Abschnitt werden wir uns alle Funktionen ansehen, da Sie über die grundlegende Autorisierung verfügen, die wir uns angeschaut haben und überprüfen würden. Sie haben auch Rollen, Sie haben Ansprüche, Sie haben Richtlinien. Wir werden uns all diese Dinge ansehen und wie sie kombiniert werden können, um eine sehr sichere Anwendung zu erstellen , die auf Ihren Geschäftsanforderungen basiert. Also bleib hier. Wir haben in diesem Abschnitt viel zu erforschen. 23. Grundlegende -Berechtigung: In Ordnung, also sind wir zurück und wollen nur eine kurze Zusammenfassung des Autorisierungsteils. Also wissen Sie in der Rezension, dass wir uns die verschiedenen Geschmacksrichtungen angeschaut haben, die wir in einer Razor-Seiten-Anwendung tun können, welche Erweiterung oder Dotnet Core-Anwendung wo man sie global einstellen kann. Und wenn wir das nicht global sitzen wollen, können wir immer auf die spezifische Seite oder den Code hinter diesen bestimmten Perlen gehen. Dies ist also die Indexseite der Kategorien. Und ich kann Autor I sagen. Also habe ich in diesem Fall nicht explizit autorisiert. Es ist bereits global Ports festgelegt. Dies ist eine Kategorie, daher möchten Sie dies autorisieren, da Sie wahrscheinlich möchten, dass dies dem gewidmet ist, was Administratoren im System im Gegensatz zu normalen Benutzern tun können. Allerdings. Also richtig, nein, es ändert sich wie wegen des globalen Filters. Und wenn ich es explizit machen wollte, sagen wir einfach Autor, Autoren, das ist in Ordnung. Aber wenn ich dann global autorisieren möchte und dann ausgenommen habe, wie wir es für die Indexseite der Anzeigen getan haben. liegt daran, dass ich regelmäßig Nutzer in der Lage sein sollten, auf meine Kleinanzeigen-Websites zu kommen und sich die Liste der Anzeigen anzusehen, ohne sich authentifizieren zu müssen. Vielleicht möchte ich, wenn sie einen erstellen wollen, dann möchte ich, dass sie sich zu diesem Zeitpunkt authentifizieren, ich erlaube nicht anonym. Also musst du dich authentifizieren, Innenkegel signieren, dann kannst du erstellen, damit ich weiß wer du bist, oder? Das sind also die Arten von Entscheidungen, die Sie treffen müssen. Aber dann zusätzlich zu all dem, denn wir haben uns das alles schon auf der Grundstufe angeschaut. Ich möchte Ihnen einige Beispiele aus MVC-Apps und Blazer-Ups zeigen , die ich in der Vergangenheit aufgebaut habe. Also habe ich erwähnt, dass es etwas anders aussehen könnte, weil MVC Ansichten, Controller und Modelle verwendet. Die Platzierungen dieser Autorisierungskacheln würden also im Verantwortlichen sein. Und es ist ein bisschen anders als die Seite, weil die Seite ja, sie hat auf Git und es hat auf Post und Sie haben das, was Sie als Handler bezeichnen. Aber alle diese beziehen sich auf die Seite. Es ist also nicht so, dass ich die En-Gedi autorisieren kann. Versucht zu verfassen, wie es hier ist. Und dann autorisiere keinen anderen Handler. Es autorisiert entweder die gesamte Seite oder ich bin es nicht. Wenn ich also versuche, nur den Handler anzubieten, den du hier siehst, wird es kennzeichnen und sagen: Nun, das kann nicht auf den Handler angewendet werden. Es muss global angewendet werden. Entweder haben Sie Zugriff auf die Seite und die Hunderte auf der Seite oder auf Ihre Bones. Das ist also alles MVC tut mir leid. Das sind alles Razor-Seiten mit einem Handle, das ist alles Autorisierungsszenario. Hier ist jedoch ein Beispiel für eine MVC-App, die ich gemacht habe und diese tatsächlich in meinem Kurs gemacht habe, ASP.Net Core abschließen und zu verschiedenen Wortentwicklungen entwickeln, oder? In diesem Fall machen wir uns durch die Autorisierung nur nicht so ausführlich gut wie in diesem Kurs. Aber Sie werden hier sehen, dass dies ein Controller ist und ein Controller verschiedene Aktionen hat, oder? Jeder Sauerstoff hätte also einen Blick. Ich mache das nur durch, falls du mit MVC nicht sehr vertraut bist. Jeder Controller hätte also eine Aktion und die Aktion hat eine entsprechende Ansicht. Wenn Sie also in den Ordner „Views“ schauen , werden Sie immer einen Ordner mit dem gleichen Namen wie ein Controller finden. Das ist also Home-Controller. Hier ist ein Home-Ordner im View-Ordner. Dann die Indexaktion, da ist die Indexansicht, die zu diesem Axon gehört. Das bedeutet also, dass ein Controller gleichzeitig Zugriff auf mehrere Seiten hat. Ich kann alle Seiten autorisieren, die mit diesem Controller verknüpft sein könnten. Was bedeutet, dass ich nur den Autor sage, da Sie sich anmelden müssen, um auf die Indexseite, die Datenschutzseite und wahrscheinlich sogar die Pfeilseite zuzugreifen , oder? Jede Seite, bei der es sich um eine Aktion handelt, bei der eine Seite oder eine Ansicht verknüpft ist, wird von mir automatisch autorisiert. Wenn ich nun nicht die gesamte Kontrolle über die Autorisierung autorisieren wollte , vielleicht nur eine bestimmte Ansicht, dann kann ich diese Flut einfach direkt über diese Aktion stellen. Das bedeutet also, dass kein Index eine Authentifizierung erfordert. Was für Datenschutz und Irrtum nicht. So funktioniert es im Grunde in einer MVC-Anwendung. Also, selbst wenn ich sagte, anonym zulassen, diesen ganzen Controller, dann überschreibt dieser Autor seine niedrige Anonymisierung für diese spezielle Aktion, oder? Jedes Mal, wenn wir zum Index gehen, müssen Sie sich authentifizieren. Aber wegen der niedrigen Anonymen gleichmäßig gab es einen globalen Autor als Filter. Dann. Dies würde es dem Home-Controller ermöglichen, anonymen Benutzern den Zugriff darauf zu ermöglichen. So sieht es in einer MVC-Anwendung im Grunde aus. Ich weiß nicht ob, du weißt, welches du bevorzugst, welches Modell du auch bevorzugst, beide sind ziemlich dasselbe. Sie müssen nur die Nuancen zu schätzen wissen, damit Sie richtig arbeiten können? Nein, das nächste Beispiel. Kommt in Form meines Blazers hoch. Also mache ich das hier. Dies ist eine Buchhandel-API, bei der ich diese in meiner Geschwindigkeit auf einem Core-API- und Blazer-Kurs mache. In diesem Kurs durchlaufen wir also die API-Entwicklung. Klar. Und aber dann merken Sie, dass unsere API-Entwicklung 12 ist, genau wie MVC, wo Sie Ihre Controller haben und Sie direkt über diesen API-Endpunkten autorisiert markieren können , genau oder über dem gesamten Controller oder darüber Verhalten oder Aktion, genau wie ich es in den regulären MVC-Anwendungen dargestellt habe, damit Sie eine Parallele zwischen einer API und einer MVC-Anwendung ausführen können , wie Sie mit der Autorisierung umgehen. Aber in Bezug auf den Blazer, wenn Sie in den Komponenten sind, bin ich in dieser Komponente, die die Autoren lädt. Innerhalb dieser Komponente kann ich Sie in ein Attribut oben in der Komponente einfügen, in der der Author steht. Und so das, und genau das habe ich gesagt. der gesamten Dotnet Core-Anwendung sieht es im Grunde gleich aus. Schauen wir uns also ein paar Nuancen an. Also würde ich es hier tatsächlich in der Komponente selbst sehen. Und die Komponente ist ziemlich hybride aus Yeah, HTML-Markup oder RAs, Marco, Bruder und C-Sharp. So sieht unsere Komponente so ziemlich aus. Für den Fall, dass Sie damit nicht unbedingt vertraut sind. Das bringt es auf den Tisch. Genau hier kann ich sehen, dass ich diese Komponenten autorisieren möchte. Wenn Sie also versuchen, dorthin zu navigieren, müssen Sie sich einloggen. Eine weitere coole Sache, ein Bootsblazer und so etwas ist in den Dotnet Core-Anwendungen verfügbar, wenn ich auf NBC aufbringe. Das ist wir können Wer ist die autorisierte Ansicht? Hier sehe ich nur eine autorisierte Ansicht und gebe , dass die Person, wenn die Person vom Rollenadministrator ist, dies anzeigen kann. Das ist so ziemlich alles. Tut es. Wir machen etwas Ähnliches wie auf der Anmeldeseite, nicht auf der Anmeldeseite in der Teilkomponente des Logins. Auf unseren Razor-Seiten nach oben sagen wir, dass bestimmte Dinge nur angezeigt werden, wenn die Person angemeldet ist oder wenn wir wissen, dass wir dies erweitern können. Wir können immer sagen, ob die Person in unserer Rolle oder so ähnlich ist, können wir diese ausgefallenen Dinge hier tun. Also zeige ich Ihnen nur, dass die gesamte Autorisierung irgendwie ist, sie unterscheidet sich von sehr winzigen Strecken zwischen den verschiedenen Dotnet-Anwendungsvorlagen. Wenn Sie jedoch den Gedanken zu schätzen wissen, dass, sobald Sie autorisieren oder diesen globalen Filter einsetzen , alles autorisiert werden muss. Dann sind Sie bereits bei der Dauergenehmigung auf Ihrem Weizen. Was wir jetzt tun wollen, ist noch einen Schritt weiter zu gehen. Sie würden also hier sehen, dass dies angibt, wie wir eine Rolle nennen werden, oder? Es heißt, Rollen gleich Administrator. Ich kann mein Urlaubsleitung ansprechen und ich kann euch dem in der zeigen, welches es in der Urlaubszuweisung ist. Es autorisiert automatisch nur Regeln für den Administrator. Ordnung, es gibt jedoch Zeiten, in denen Sie nicht wirklich angeben können , dass ich nur diese Rolle für die Steuerung oder diese Aktionen oder in unserem Fall für diese Seiten autorisieren möchte nur diese Rolle für die Steuerung oder diese Aktionen oder . In unserem Fall möchten wir also sicherstellen, dass nur Administratoren Kategorien erstellen können , sind Interrupter-Kategorien. Aber dann sollte jeder normale Nutzer in der Lage sein, mit Werbung zu interagieren. Das ist also unsere nächste Mission. Wenn wir also wiederkommen, werden wir verstehen, wie die Regeln Kohle waren. Wir fügen Benutzern Rollen hinzu und wie wir diese nutzen, um durchzusetzen, was sie können und was nicht. 24. Rollen für Benutzer hinzufügen: Alles klar Leute, also nein, um Rollen darüber zu diskutieren, wie wir Zeilen in unserer Anwendung implementieren können, auf unheilige geht hoch, es hilft uns. Unsere Rolle ist also im Grunde wie eine Erlaubnis. Wie lautet Ihr Weg in Ihrem Unternehmen? Sind Sie ein Chef, Sind Sie ein Arbeiter usw., basierend auf Ihrer Rolle, können Sie bestimmte Dinge tun, wie bestimmte Privilegien usw. Genau so wollen wir im wirklichen Leben diese Art von Strenge in unserer Anwendung replizieren. Wenn wir mit Benutzern über aufsteigende Regeln sprechen und sicherstellen, dass sie bestimmte Dinge nicht tun können. Der einfachste Weg, direkt in das System zu gelangen, ist das Seed. Es liegt daran, dass Sie im Allgemeinen, wenn Sie mit der Erstellung einer Anwendung beginnen, die Voraussicht haben zu wissen, dass dies die Regeln sind, die verwendet werden könnten? Ja, später kann er sie über unsere Benutzeroberfläche verwalten. Kugeln, oder? Kein Betrug, um cool zu werden, wir werden nur versuchen, sie mit Entity Framework in die Datenbank zu setzen und wie es diese Seeding oder ED sind. Also haben innerhalb der Konfiguration bereits zwei Konfigurationsgase, in denen wir gesät haben. Also werde ich diese Art von Konstrukt einfach mit den Regeln replizieren, und deshalb füge ich einfach eine neue Klasse hinzu. Ich rufe die Role-Seed-Konfiguration auf. Ich gehe nur zur Seed-Konfiguration, weil das alles ist, wofür ich es wirklich tun werde. Und ich lasse es von der I-Typ-Konfiguration der Identitätsrolle erben. Ordnung, also müssen Sie danach möglicherweise einige using-Anweisungen hinzufügen, aber dann müssen wir diese Schnittstelle implementieren. Beachten Sie also, dass wir die Identitätsregel verwenden, die bereits das Foto über die Identität der Entitäten, Rhode usw., angeschaut hat. Wenn Sie sich dafür entschieden haben, dies wie in zu überschreiben, verwenden Sie Ihren eigenen Rollentyp genau wie insgesamt den Benutzertyp, Sie können Identitätsrolle immer durch den Rollentyp ersetzen , den Sie nach dem Fakt erstellt haben. Also null innerhalb des Builders, ich werde zwei Rollen haben, Kunde und Administrator und alle. Du schaust dir den Code an, der auf meinem Bildschirm ist und fragst dich wahrscheinlich, welches Thema. Das ist in Ordnung. Lassen Sie mich das gesamte Gitter erklären, das hier passiert. Wir haben also bereits die Vorlage dafür, wie wir die CD machen, oder wie wir sagen, ein Builder-Punkt hat Daten und ein neues Objekt und dann füllen wir die Stücke aus. Hier haben wir also die neue Identitätsregel ihrer Daten erstellt. Alles klar? Und dann füllen wir alle Felder aus, die zumindest die Felder sind , die wir für absolut notwendig halten. Sie haben also ein gleichzeitiges System hat ein anderes Feld, aber ich brauche dieses in dieser Situation nicht wirklich. Identitätsregel, ID ist also gleich, ich habe gerade gut angerufen, weil sie void als Primärschlüssel in den Identitätstabellen verwenden , oder? So kannst du einfach gehen und ein Gutes finden und das benutzen. Und ich habe buchstäblich nur ein paar Zeichen in demselben Gut geändert, damit du es replizieren kannst. So kannst du dein eigenes Gut gebrauchen, das ist in Ordnung. Es ist ein leerer Tisch, also haben Sie den Luxus, das einzubringen, was Sie wollen. Außerdem ändert sich diese Tabelle nicht unbedingt viel, daher ist die Wahrscheinlichkeit eines späteren Absturzes stark reduziert. Also hab ich das. Und dann im Namen meine ich normalerweise, dass der Name eine Zeichenfolge ist. Du hättest String gehabt. Vielleicht sagst du „Kunde“. Sobald ich es aber nicht tun möchte, ist es all diese statische Lichterkette zu schreiben, das ist unsere magische Schnur. Um das zu reduzieren, habe ich einen anderen Ordner namens Konstanten erstellt. In diesen Konstanten, die voll von einer Datei hinzugefügt wurden, die als Regel bezeichnet wird, und dann rollen. Dieser Typ hat nur Konstanten, Strings. So viele Regeln, wie Sie vielleicht möchten, nur passende Namen und den tatsächlichen Wert sagen von diesem magischen Stream einmal. In Ordnung, dann später nur als Referenz, es ist also gleich dem Rho-Punkt-Kunden , der den normalisierten Namen des statischen Strings zurückgeben wird. Grundsätzlich ist es die großgeschriebene Version ein, aus welchem Namen wir mit dem Benutzernamen und dem normalisierten Benutzernamen oder der E-Mail gesehen haben und E-Mails in der Tabelle der ASP NET-Benutzer normalisieren. So normalisierter Name hier, sehen wir nur, geben Sie mir etwas über den Kunden, aber setzen Sie ihn in Großbuchstaben. Das ist viel sauberer, glaube ich, oder? Und später machen wir das Gleiche für die Administratoren. So viele Regeln wie Sie benötigen, können Sie diese Schritte replizieren. Jetzt ist der nächste Schritt, RMI gräulich zu machen. Sie müssen also daran denken, dass wir unsere Anwendungs-DVI-Kontexte aktualisieren müssen, um es wissen zu lassen , dass es wissen sollte, wie diese meine Konfiguration auf null startet. Möglicherweise haben Sie in Zukunft mehrere Seed-Konfigurationen , da Sie den Benutzer möglicherweise sehen möchten. Möglicherweise möchten Sie die Schriftart, die dieser Benutzer mit dieser Regel verknüpft ist , einsetzen, und Sie können am Ende viele Konfigurationsdateien haben. Was ich also tun werde, ist die einzelnen Leitungen zu reduzieren und durch diese zu ersetzen. Modelbuilder-Punkt wendet Konfigurationen aus dem Assembly-Typ der Anwendung, DVI-Kontexten oder was auch immer Ihr DB-Kontext und das Ziel ist, nicht von der Assembly an. Das ist also wirklich Spanisch, Zitat ohne Zitat vier. Schauen Sie in der aktuellen Assembly nach, in der sich der DB-Kontext befindet, und rufen Sie alle Konfigurationsdateien ab, die mit verknüpft sind. Das ist so ziemlich alles, was es tut. Alles klar, also scannen Sie einfach durch und finden Sie heraus, dass alles hier eine Konfigurationsdatei ist, die mit einer Entität verknüpft ist, die ich kenne , usw. Und mit dieser einen Zeile wenden Sie alle diese Konfigurationsdateien automatisch an. Lassen Sie es uns wissen, führen Sie unsere Migrationen durch. Ich werde die ländliche Saatgutmigration hinzufügen, die uns dann wie erwartet diese Migrationsdatei gibt, aus der hervorgeht, dass es tragbar ist, Werte in unsere SBI-Netto-Rollentabelle einzufügen . Ordnung, also das ist unsere ID, die eingefügt wird, und dann hat es automatisch das gleichzeitige System und den Namen Ministerium Peter und Kunde durchgeführt. Alles klar. Damit das erledigt ist, können wir ein Update machen. Und nein, wir haben das System erfolgreich aktualisiert. Jetzt möchten Sie wahrscheinlich einen Administrator im System haben, der von den Benutzern getrennt ist, oder jeder, der sich normalerweise registriert, sollte ein Rucola-Benutzer sein, unser Kunde anderer, und dann haben wir Administratoren kontrolliert. Basierend auf Ihren Geschäftsregeln und Ihrer Strategie müssen Sie möglicherweise verschiedene Möglichkeiten einsetzen, dies zu tun. Im Allgemeinen möchten Sie einen Systemadministrator haben. Wir haben also bereits einige Benutzer, die wir bereits admin genannt haben. Und ich zeige Ihnen genau, wie Sie sie direkt mit unserer Rolle in der Datenbank verknüpfen können . Das ist also eine Art von Manuel und dann schauen wir uns an, wie der Kunde am Wochenende ist. Und dann schauen wir uns weiter an, wie wir die Regel festlegen können, sobald sich die Person registriert hat. Beginnen wir also mit der ISBN That User-Tabelle. Und wir werden uns die ID für die Zeilen ansehen. Also ASP NET-Regeln und SBI-Netzbenutzer. Also schauen wir uns die Daten für beide Tabellen an. Wir werden sehen, was wir erwarten, oder? Administrator im Vergleich zu den Benutzern. Es gibt also eine andere Tabelle hier und alles, was eine Viele-zu-Viele-Beziehungstabelle oder ein Linker zwischen den Benutzern und Rollen ist , die als ASP NET-Benutzerrollen bezeichnet werden. Dieser nimmt also tatsächlich die Benutzer-ID und die Rollenidee und sagt, dass diese beiden, die ich verknüpft habe, ist, dass ein Benutzer mehrere Rollen haben kann. Es ist also nicht so, dass ein Benutzer nur der eine oder andere sein muss. Es kann mehrere unterstützen. Aber das liegt wieder im Ermessen Ihrer Geschäftsanforderungen. Also wollte ich den Admin-Test dieses Benutzers machen. Ich möchte nicht in Benutzerrollen gehen und ich werde sagen, dass diese Benutzer-ID, dann gehe ich zu Rollen und nehme diese Administrator-ID und sage diese Regelkennung. Ich, sobald ich das mache, null aus dem Hintern. Der Admin-Benutzer wird als Administrator unserer Szene angesehen, um diese Rolle in unserem System zu übernehmen. Nun, es liegt an uns zu sagen, was diese Rolle leisten kann und was nicht. Was das System betrifft, hat dieser Benutzer diese Rolle. So einfach ist es. Aber Symbol bedeutet nicht immer praktisch denn es gibt keinen Benutzer, der hier vorbeikommen wird und dies tun wird. Lassen Sie uns also rüberspringen, um zu sehen, wie wirklich erwartet wird, dass es im System passiert. Wenn also jemand das registriert, schließe ich einfach alle Tabs. Wenn sich jemand registriert, müssen wir ihn mit dem Rollteil verknüpfen. Also zurück zur Registerseite. Was wir auf dem Beitrag tun werden, ist, wenn die Erstellung des Benutzers erfolgreich war, müssen wir sie der Regel hinzufügen. So können wir sagen, dass Login-Informationen einen neuen Benutzer erstellt haben, ein Anruf mit basilar, das ist in Ordnung. Unter diesem Protokoll sehen wir einen Gewicht-Benutzermanager. Wir sollen also den User Manager haben, wir wissen das, die Existenz Ihrer Polarität. Und dann werden wir einen Punkt sehen. Und wenn ich nur eine Regel eintippe, werden Sie alle potenziellen Dinge sehen, die Sie mit dem Benutzermonitor relativ zur Regel tun können . So können Sie zum Rollen hinzufügen. kannst du, tut mir leid. Sie können Roll bekommen, die Benutzer in einer bestimmten Regel abrufen. Sie können überprüfen, ob unsere Benutzer in einem Rodeo so viele Dinge sind. Ordnung, also wollen wir in diesem Fall die Rolle hinzufügen, also weiter, um eine Spüle zu verändern. Und dann braucht dies zwei Parameter, den Benutzer, den wir gerade erstellt haben, und die Rolle. Und ich werde ja, was ich immer Administrator eingeben kann, wenn ich das falsch geschrieben habe. An diesem Punkt würde ich eine Weile debuggen und mich fragen, warum dieses Ding nicht funktionieren wird, weil ich wahrscheinlich alt und ich vermisst habe, und ich bin mir dessen nicht bewusst. Vielleicht wird jemand anderes kommen und sehen, dass du es falsch geschrieben hast. Also sagte ich Roll, was unser ständiges Kreuz ist und ich sehe es nicht. Also lass mich wieder hier rüberspringen. Alles klar, also weniger und Fehler und ich werde es einfach selbst schnitzen. Wenn Sie die Steuerbehörde vorher gesehen haben, ist das in Ordnung. Erstens muss ich das öffentlich machen. Ich habe es nicht öffentlich gemacht. Und zweitens, dass der Dateiname Regeln ist. Die Klassennamen sollten auch Zeilen sein. Alles klar, also versuchen wir es noch einmal. Also Rollen, und wenn ich Punkte null kontrolliere, können wir es richtig machen. Also Rollen, Punktadministrator oder Kunde. Also kann ich sagen, fügen Sie zwei Zeilen und die Zeilen hinzu, Kunde und ich denke, das ist besser lesbar, das ist kompilieren sicher. Natürlich. Es gibt also keinen Fehler in Bezug auf die Rechtschreibung oder irgendeine Mehrdeutigkeit darüber, welche Regel hier verwendet wird. Okay, also lasst uns einen schnellen Test machen und einen neuen Kunden registrieren. Und ich habe ein paar Fehler. Ich muss hier nur mit der Schreibweise anfangen. Also registriere ich diesen neuen Kunden. Und sobald wir diese Rede getroffen haben und wissen, dass sie funktioniert. Wenn ich also zurück zu den Datenbanken C1 gehe, haben wir unseren neuen Kunden hier, Kunden. Und du siehst, der Ausweis beginnt mit 22 etwas. Ob das gut ist, wenn wir in die Tabelle der Benutzerrollen schauen, entferne ich die frühere, die wir gemacht haben. Nein, Sie werden sehen, dass wir diesen Kunden haben, also haben wir diese Kunden-ID sowie die Rollen-ID, die der Kundenrolle entspricht. Und das ist so ziemlich genau das. Also nein, jeder, der diese spezielle Authentifizierung durchläuft, tut mir leid, dieser spezielle Registrierungsprozess wird dem Kunden immer hinzugefügt. An dieser Stelle sollten Sie vielleicht überlegen, ob Sie etwas anderes möchten oder Personen erlauben möchten, sich als verschiedene Rollen zu registrieren. Weil Sie das manchmal in Systemen haben, die beim Boarding dienen könnten. Vielleicht könnte Ihre Rolle diese Abteilung repräsentieren, richtig. Oder so etwas. Sie möchten es also verwenden, um zu ermitteln, welche Abteilung sie sind und welche Rolle sie im System haben möchten , damit Sie diese bestimmte Rolle verwenden können. An diesem Punkt möchten Sie sich die Rolle des Managers ansehen, die es Ihnen ermöglicht, ein bisschen mehr mit der Regel zu interagieren, ist stabil. So können Sie immer genau mögen, nun, Sie haben den Benutzer und die absteigenden Manager, Sie haben ländliche und verwaltete oder relativ zur Identitätsrolle oder was auch immer Ihre benutzerdefinierte Klasse ist. Und dann kann er das einfach in Ihre Registrierungsseite injizieren. Und ich gehe nur davon aus, dass Sie an dieser Stelle bereits wissen, wie man sich wie eine Dropdown-Liste und all diese Dinge einrichtet. Also konzentriere ich mich nicht auf die Benutzeroberfläche auseinander. Was ich also versuche, 0 zu machen, ist, dass Sie Ihre Rollenliste hier als neue Auswahlliste einrichten können. Diese TX-Rolle von Manager-Punkten. Und dann kann er die Rollen einfach als Regelliste direkt dort bekommen. Und Sie können es in die Liste bringen, wenn Sie möchten, Sie filtern können. Es ist zumindest das Angebot kam aus der Datenbank. Wenn Sie also dabei sind, wie Sie Listen mit verknüpften und erweiterten Methoden manipulieren können, dann ist es hier das gleiche Prinzip. Also könntest du das machen. Und dann haben Sie den Namen als das Feld, das ausgewählt werden soll, und den Namen als das, was angezeigt wird. Und genau dort können Sie alle Regeln auf Ihrer Seite auflisten , damit Ihre Benutzer auswählen können, welche sie möchten. Um diesem Vorschlag mehr Praktikabilität zu verleihen, habe ich getan, das Eingabemodell zu ändern. Und ich habe eine ausgewählte Eigenschaft hinzugefügt, vier Rollen und eine für die erforderliche Rolle. Sie haben also die Identifizierung, welche Zeile sie wünschen, um erfolgreich einreichen zu können. Wir wissen, dass das schon stimmt. In den Fgets sage ich also Input, welches das Objekt des Eingabemodells ist, das der pH-Wert verwenden wird. Ich initialisiere es auf eine neue Instanz, in der Regeln einer neuen Instanz der Rolle entsprechen, Rollen für Erwachsene verwalten. Der Punkt, der den Namen als Selektor, den Auswahlwert und die Anzeige erhält . In C-Sharp kann in den neuesten Versionen von CSRP eigentlich einfach neu sagen, sagen Sie einfach, was ich hier gemacht habe. Anstatt wieder ein neues Eingabemodell zu sagen, das sündige dich, aber manchmal behalte ich es aus Gründen der Lesbarkeit immer noch. Und obwohl Erwachsene oft unbedingt verwenden, liegt es daran, dass der Konstruktor impliziert sein könnte. Das ist allerdings außer dem Punkt. Wir wollen also sicherstellen, dass wir das dort haben und dann nicht dort sind, wo wir sie der Rolle hinzufügen, anstatt die Regel fest zu codieren . Wir werden die Rolle übernehmen, die von der Eingabe stammt. Alles klar? Natürlich müssen wir diese Zuordnung der Regelliste wiederholen, wenn sich etwas anfühlt, damit der pH-Wert die Liste erfolgreich neu laden kann. Mal sehen, wie das aussieht. Auf der Register-Seite selbst habe ich nur ein Select-Tag hinzugefügt. Alles klar. Formularsteuerelement gab die Elemente aus der Liste der Eingabe-Punkt-Rollen an, und es ist für die Rolle. Und dann hat es den Wunsch, dass die gewünschte Rolle standardmäßig ausgewählt wird, und es listet nicht die Regeln auf, die aus dem System kommen. In Ordnung, das ist einfach. Wenn ich mich also als Kunde und Kunde registriere oder lasse mich als Administrator registrieren. Und ich sehe Admin eins und fülle das aus. Und dann klicke ich auf Register. Alles klar, also wir klicken auf die Bestätigungsseite und wenn ich zurück zum Projekt springe und in die Benutzertabelle schaue, sehen wir, dass wir Admin 1 und ID 0, 0, 1, b. Sagen Sie, wenn ich zur Rollentabelle gehe, gehe ich jetzt sehen Sie, dass ich 000 001 BE habe. Und das ist die Admin-ID, die sie referenzieren kann, wenn Sie möchten. Aber mein Punkt ist, dass Sie den Benutzer auf diese Weise dazu bringen würden, seine eigene Regel auszuwählen und sich mit einer bestimmten Regel an Bord zu machen. Natürlich können Sie diese Listen immer wieder manipulieren. Wenn ja, habe ich die Administratorrolle und andere benutzerbasierte Regeln, aber Sie möchten nicht, dass die Leute den Administrator auswählen, dann haben Sie beim Laden einfach von dieser Liste ausgeschlossen. Bei allem, was gesagt und getan wird , erhalten Sie so Regeln zu den Benutzern. Wissen Sie, wenn wir zurückkommen, werden wir uns ansehen, wie wir einschränken können, was bestimmte Regeln tun können und was nicht. 25. Role Aufwende: Alles klar, Leute, also möchten wir uns in dieser Lektion ansehen, wie wir wissen können, dass die Regeln und Einschränkungen basierend auf den Regeln in unserer Anwendung implementieren können. Also habe ich gerade eine Porenseiten und du kannst sehen, dass ich ihr kleines Facelifting auf die Titelseite gemacht habe. Nur ein bisschen Informationskram. Wenn wir uns jedoch Werbung und unsere Kategorien ansehen, sehen wir, dass Kategorien eher eine Autorisierung oder Authentifizierung erfordern, während Werbung dies nicht der Fall ist. Bei Werbung kann ich jedoch leicht häufig Änderungen vornehmen, die Details ansehen oder eine Anzeige löschen, oder? sind also Kleinigkeiten, die natürlich rote Flaggen in jedem System wären. Und Sie möchten in der Lage sein, einzuschränken, was bestimmte Personen tun können. Und wir sind sicher, dass Leute gehen können, denn an dieser Stelle kann ich als Kunde hier reinkommen und trotzdem alle Kategorien manipulieren können. Wir wollten also sicherstellen, dass der Zugriff auf die Kategorien nur auf Administratorbenutzer beschränkt ist. Und wir möchten wahrscheinlich die Möglichkeit verbergen, die Werbung zu manipulieren oder zumindest eine Anzeige oder nur Administratorbenutzer zu bearbeiten oder zu löschen . Eine Änderung hilft uns also, den Code hinter der Datei zu ändern , denn es gibt eine Seite ist Seite, die wieder leicht die Aktion oder sogar die Rasiermesserkomponente sein könnte. Und der andere würde uns dazu bringen, die tatsächlichen Seitenstrahlen zu ändern, was wie bei der MVC-Anwendung auf einer Lebenslaufseite wäre. Und so ziemlich das Gleiche für eine Blazerkomponente. Also wollte ich mit dem anfangen, was ich denke, die niedrigeren hängenden Früchte sind, die den Code dahinter verändern. Ich möchte also nur sicherstellen, dass die Person, die sich anzumelden versucht, sich anzumelden, wenn sie kommt und versucht, sich anzumelden, ein Administrator sein muss. In Ordnung, also lass mich Logos und ich gehe zurück zu unserem Anwendungscode. Und alles, was ich wirklich für die Kategorien tun muss ist den Autor anzugeben, da wir also immer noch als Filter zu unserem Autor zurückkehren müssen. Aber dann werde ich es wissen lassen, dass die Rolle, also sehen Sie hier, dass Sie angeben können, dass der Autor Attribute mit dem Wanda-Authentifizierungsschema hat . Sie können es also einschränken, wenn es sich um ein Cookie handelt oder wenn es sich nicht um Cookie handelt, erlauben oder nicht zulassen, und so weiter. Ich kann eine Richtlinie angeben. Wir werden uns später die Richtlinien ansehen. Und ich kann auch die Rollen angeben. Beachten Sie also seine Rollen, oder? Ich kann also tatsächlich sehen, dass mehr als eine Rollen auf einen bestimmten Bereich zugreifen können. Wenn ich also hier Regeln sage und gleich sage, würde ich ihm tatsächlich eine Zeichenfolge geben. Jetzt wäre diese Zeichenfolge so, als würde sie eine durch Kommas getrennte Liste nehmen, sagt hier, dass sie uns bekommt. Es ist eine durch Kommas getrennte Liste von Regeln, die auf die Ressource zugreifen dürfen. Wenn ich also wollte, dass Administratorkomma, Kunde, Koma, eine Komma-Regel auf so viele Regeln ausbauen möchte, wie ich einer bestimmten Ressource eine Genehmigung erteilen möchte, kann ich einfach Komma sie im gesamten Diskurs trennen. Die Gefahr der magischen Saiten und das Schreiben so. Die, von der Matzah werden Sie die meiste Male tatsächlich nur geschrieben sehen. In dieser Situation möchte ich, dass nur der Administrator auf die Kategorien zugreifen kann. Also weiß ich, dass es nur einer ist. Ich kann jetzt einfach Regeln sagen, was meine statische Klasse ist. Und dann sag „Administrator“. Und dann müssen wir für so viele andere Rollen Xudong nur die Strings verketten, während wir weitermachen und sie zusammenfügen. Fortgeschrittenere Methoden würden das Erstellen eines benutzerdefinierten Autorisierungsfilters umfassen , den wir uns später ansehen können. Aber im Moment halte ich es einfach und zeige Ihnen, wie Sie für eine bestimmte Regel in Ihrer Anwendung autorisieren würden . Wenn wir also zur Kategorieseite navigieren und versuchen, uns als Kunde zu authentifizieren , erhalten wir diese Seite für den Zugriff verweigert. Jetzt haben wir diese Seite nicht erstellt, es ist wieder eine dieser Seiten, die wir auf Wunsch gerüsten und ändern können, aber sie befindet sich im Verzeichnis Identity Slash Cones Slash Access verweigert. In Ordnung, während wir uns in dieser Situation als Benutzer oder als Kunde authentifiziert haben, können wir nicht mit dieser bestimmten Ressource fortfahren. Wir können jedoch als authentifizierte Person woanders gehen, nur nicht zur Kategorieseite. So viele Seiten oder Aktionen oder Controller, die Sie viel wünschen würden, tun dies nicht. Sie können diese Autorisierung mit der Regelspezifikation dort hinzufügen. Und nicht, wenn ich versuche, dasselbe mit Admin One zu tun, was ein Benutzer ist, den wir gerade über das Register hinzugefügt haben. Lassen Sie es den Benutzern ihre eigene Regel geben. Wir können jetzt auf Kategorien zugreifen. Okay, so funktioniert das also. Lasst uns nun zu Werbung übergehen. Also ja, wir möchten, dass Werbung für die Öffentlichkeit zugänglich ist. Ich möchte jedoch nur, dass Kunden neue erstellen können, und ich möchte nur, dass Administratoren bearbeiten oder löschen können. So können normale Leute kommen und sich die Liste der Anzeigen ansehen. Sie können auf die Details klicken. Sicher, aber nur weniger kann ein authentifizierter Benutzer Ihnen erlauben, Ihre eigenen zu erstellen. Ich möchte nicht einmal, dass ein Administrator seinen eigenen erstellen kann. Ich möchte, dass Kunden ihre eigenen Anzeigen erstellen können, und ich möchte nur, dass die Administratoren bearbeiten und löschen können. Auf der Indexseite der Anzeigen werden wir nur diesen Abschnitt ändern, in dem neue Schaltflächen erstellt werden. Also werde ich einfach beim Zeichen sagen, ob der Benutzer Punkt ist. Denken Sie also daran, dass ein Benutzer unseren Benutzerprinzipal für den angemeldeten Benutzer repräsentiert, oder? Also werde ich nur sagen, ob der Benutzer in der Rolle ist, los geht's. Und dann geben wir hier noch einmal den Namen der Rolle ein, die wir nicht unbedingt machen wollen. Wir würden es vorziehen, unsere Konstanten zu verwenden. Also Rollen, ich müsste diesen Namespace in den View-Port aufnehmen. Also werde ich nur sagen, dass der Namespace nicht nur den View-Importen entspricht , und füge dann die using-Anweisung dafür hinzu. Jedes Mal, wenn Sie unsere Klasse oder irgendwo anders innerhalb der Ansichten verwenden möchten, legen Sie sie einfach in Ansichtsimporten ab oder Sie können sie immer auf dieser bestimmten Seite ablegen. Also Rollen, Punkte. Und ich möchte prüfen, ob es ein Kunde ist. Dann zeige das an, Create New, und ich repariere einfach die Formatierung hier. In Ordnung, also möchte ich das nur anzeigen, wenn die Benutzer in der Rolle des Kunden sind. In ähnlicher Weise können Sie bearbeiten und sogar löschen, und Sie können dies ändern. Ich meine, ich könnte zwei Aussagen schreiben. Ich möchte keine zwei Aussagen schreiben. Ich werde nur Details nach oben verschieben, und dann habe ich nur eine if-Anweisung, wenn der Benutzer registriert ist, und dann prüfen wir, ob er in der Rolle des Administrators ist, dann können wir diese beiden anzeigen verlinkt zu ihnen. In Ordnung, also das war's. Sie können also damit beginnen, zu ändern was bestimmte Benutzer sehen, im Vergleich zu dem, was andere Benutzer sehen. Sagen wir, jeder ist authentifiziert, einige sind Knoten. In diesem Fall wird die Person, die sich diese Werbung anschaut, nicht gekauft. Lass mich das einfach von nein anfangen. Stimmt's? Aber wenn Sie authentifiziert sind und in einer bestimmten Rolle sind, dann sehen Sie, dass einige der Infrarot-Admins Ihr eigenes sehen, was Sie das sehen, okay? Und wenn du keines der beiden bist, wirst du nichts davon sehen. Werfen wir also einen Blick darauf, was wir nach diesen Monaten bekommen. In Ordnung, also navigiere ich als unsere normale Person zur Werbegeschwindigkeit. Ich bin in keiner Weise, Form oder Form authentifiziert. Ich sehe die Liste von uns und ich kann immer zu ihren Details navigieren und das ist in Ordnung. Das ist das erwartete Ergebnis, oder? Wenn ich jetzt unseren Login registriere, als Kunde oder ich habe ihn navigiert, während ich als Kunde angemeldet bin, dann werde ich sehen, dass ich meine eigene Werbung einschalten kann, wenn ich möchte. Ich bin jedoch immer noch darauf beschränkt, die Details anderer Anzeigen anzuzeigen, die andere Nutzer möglicherweise erstellt haben. Wenn ich jetzt als Administrator eingehe, habe ich jetzt die Möglichkeit, diese Anzeigen zu manipulieren. So kann ich mir die Details immer ansehen, ja, aber sie können sie auch bearbeiten und löschen. Aber ich kann keinen als Administrator erstellen, da dies die Systemregel und keine Kundenrollen ist . Also erstelle ich noch einmal meine eigenen Geschäftsregeln für diese Szenarien, gebe Ihnen jedoch nur ihre Ideen, wie Sie die erforderlichen oder Sicherheitsprotokolle implementieren können , die wir im System in Ihrer Organisation durchgehen werden. So wird es auf der grundlegendsten Ebene gemacht. 27. Access: In Ordnung, lassen Sie uns also die Einrichtung einer anspruchsbasierten Autorisierung besprechen. Denken Sie also daran, dass wir gerade durchgegangen sind, was Ansprüche sind. Ansprüche sind Informationen über den Benutzer, der derzeit protokolliert wurde. Je mehr Ansprüche wir uns zur Verfügung haben, desto mehr Entscheidungen können wir treffen, um zu wissen, ob wir zulassen sollten, dass wir den Benutzer von einer bestimmten Ressource oder Endpunkten einschränken. Was ich also machen werde, ist mit der Create-Seite für die Werbung zu arbeiten. Lassen Sie uns sehen, dass kein Benutzer unter 18 Jahren eine Anzeige erstellen darf. In Ordnung? Sie sollten also keine Werbung erstellen können, es sei denn, Sie sind mindestens 18 Jahre alt. Jetzt wissen wir bereits, wie wir sie mit dem autorisierten Flag nach oben einschränken. Und wir werden uns die Richtlinien ansehen, aber ich möchte Ihnen verschiedene Möglichkeiten zeigen, wie sie tatsächlich mit den Reinigungen interagieren können. Weil wir gesehen haben, dass Sie auf die Cleans zugreifen können, anstatt die Datenbank aufrufen zu müssen. Was ist, wenn Sie auf den Anspruch zugreifen müssten? Treffen Sie eine Entscheidung auf der Grundlage dieser Behauptung, ob es in diesem Fall der Zugriff verweigert ist. Zum Beispiel, REO eine andere Geschäftsregel, die Sie benötigen, um zu implementieren, was wir nur wissen möchten, wie hoch der Anspruch ist. Nehmen wir also an, dass ich das Mindestalter des aktuellen Nutzers wollte. Ich kann damit beginnen, dass var das Mindestalter gleich dem Benutzer ist, was das Benutzerobjekt darstellt, das das Hauptobjekt in den HTTP-Kontexten beansprucht. So suchen Sie zuerst den Benutzerpunkt. Bevor ich dir zuerst die Geldstrafe zeige, wenn du sagst user.email sieht tatsächlich Behauptungen entgegengesetzt. Sie sehen mehrere Identitäten, die Sie feststellen können, dass sie in Rolle sind. Sie können Ansprüche und so weiter sehen , und so weiter, oder so weiter, oder? All diese stehen Ihnen zur Verfügung. Wenn Sie also Ansprüche geltend machen, sind Ansprüche wirklich nur eine Sammlung der Ansprüche. Sie könnten dies also tatsächlich verwenden, um zu sagen, dass unsere Standardwerte zuerst nur abfragen, die Liste genauso abfragen, wie Sie etwas in der Datenbank verhört hätten. Ich könnte Klimt für als unseren Standard-Lambda-Ausdruck q dot sagen. Und dann könnte ich feststellen, dass ich das will, richtig, entspricht, also ist der Typ hier eine Zeichenfolge. Und deshalb haben wir unsere Benutzeransprüche konstante Klasse. Also muss ich diese statischen Strings nicht ständig tippen. Es wird also sagen, dass der Benutzer behauptet, sein Mindestalter. Und nachdem ich das verstanden habe, wäre das kein Anspruch. Natürlich weiß ich, wenn ich den Anspruch erhalte, nicht, ob es tatsächlich existieren würde. Ich mache nur Fragezeichen-Punkte. Das ist also meine Nullkoaleszierung, wo es sagen würde, wenn es nicht existiert, einfach null zurück, andernfalls versuchen Sie, den Wert zu erhalten, wenn er existiert. Alles klar, also ist das eine Möglichkeit, das Mindestalter zu ermitteln. Sie sehen also hier, dass wir die Liste der Ansprüche genau wie jede andere Liste in C sharp befragen können . Nun wäre eine Alternative dazu die erste gewesen, mit der ich angefangen habe, was der erste Fund wäre. Also suchen user.name zuerst. Und dann könnten wir darin tatsächlich einfach die Zeichenfolge einfügen, die diese Behauptung darstellt. Also nimmt find zuerst den Typ als Parameter und es gibt einfach null zurück, wenn nicht viel sein Telefon. Und dann ist der Rückgabetyp noch sauber. Das bedeutet also, dass ich immer noch versuchen müsste, diesen Wert zu bekommen. Natürlich wird dieser Wert String sein, also haben wir das immer noch nicht als Booleschen Wert. Das ist also eine andere Sache, die Sie in Betracht ziehen müssten. Und obwohl auch die Sache ist, dass diese Fund First-Methode auch einen Lambda-Ausdruck annehmen könnte , der dem ähnelt, was wir zuerst mit der Feinen gemacht haben. Also zeige ich Ihnen nur, dass alle Ihre Optionen gut sind, um Ihre Optionen zu kennen, aber natürlich ist es gleichzeitig gut, sich auf einen Standard zu einigen, damit jeder zusammen arbeiten muss, jeder ein Viertel gleich ist, oder? Dies sind also verschiedene Möglichkeiten, mit denen Sie auf bestimmte Forderungen zugreifen können , und dann auf den Wert, den sie schreien. Und dann müssen Sie natürlich, basierend auf dem Datentyp, den Sie erwarten oder den Sie verarbeiten müssen, Ihre Konvertierung durchführen. Was ich also tun werde, ist diese if-Anweisung zu haben , die besagt, ob das Mindestalter null entspricht, was bedeutet, dass der saubere Typ für diesen Benutzer wahrscheinlich nicht existiert. Oder wenn wir nach dem Parsen den Wert false erhalten, möchten wir zu Identitätsschrägstrich umleiten, den unser Doppelpunkt-Schrägstrich-Zugriff verweigert hat. Zugriff verweigert ist also ein pH-Wert, der uns über die Identitäts-Suite von Seiten zur Verfügung steht. Wenn du ein weiteres Stück hinzufügst, zu dem sie gehen sollen, könntest du es an diesem Punkt einfach dort lesen. Das ist also alles, was wir tun. Lassen Sie uns also einen Test mit unserem Kunden machen, von dem wir wissen, dass er am 18. ist. Nachdem wir uns bei einem Kunden unter 18 Jahren angemeldet haben und dann nach dem Trend, neue zu erstellen, sehen wir, dass wir nicht auf den Zugriff umgeleitet werden, der verweigert wurde. Sie können nicht darauf zugreifen, da Sie unter 18 Jahre alt sind? Nein. Ich versuche das noch einmal im Debug-Modus oder demselben Benutzer, ich habe gerade Haltepunkte getroffen, um einen Haltepunkt eher auf unsere if-Anweisungen zu setzen , damit wir aufhören können. Und ich kann dir zeigen, was hinter den Kulissen wirklich passiert. Wir haben also unser Prinzip der Benutzeransprüche. Wenn wir dies verlängern, sehen wir, dass wir alle Ansprüche haben. Wenn wir uns die Ansprüche ansehen, sehen wir, dass wir die Standardansprüche haben, die wir kennen, und dann die benutzerdefinierten. Das Mindestalter ist also erwartungsgemäß falsch. Und wenn wir an diesen Punkt kommen, heißt es falsch, also müssen wir nicht einmal prüfen, ob es so ist. Dieser Wissenscheck war also wirklich, dass ich übermäßig vorsichtig bin. Aber in diesem Stadium, da wir kontrollieren, welche Ansprüche eingehen, haben wir das in der letzten Lektion getan. Zu keinem Zeitpunkt sollte ich einen Login ohne den besonderen Anspruch verwenden, oder? Es sei denn, etwas hat das gesamte System geändert. Und deshalb haben wir eine leichte Regression bei Tests und Komponententests , um sicherzustellen, dass diese Dinge nicht passieren, oder? Wenn es also der minimale Vorteil ist, kann ich tatsächlich mit all dem machen. Aber nachdem wir diese Zeichenfolge analysiert haben, prüfen wir, ob sie dem Wert false entspricht, und deshalb gehen wir zur Return-Weiterleitung. So können Sie den Patina-Benutzer testen, dessen Geburtsdatum ihn über 18 Jahre hinaus bringen würde. Und dann versuche dieses Szenario noch einmal und sieh, was passiert. Das ist also Schritt Nummer 1, wie wir Ansprüche während der Laufzeit des Systems verwenden können. Wenn wir wiederkommen, werden wir uns ansehen, wie wir Richtlinien umsetzen können. Also, nun, natürlich wäre es ziemlich schwierig, diese Art von Logik hier, da und überall zu platzieren. Das würdest du unbedingt nicht unbedingt tun wollen. Wir werden also anfangen, uns Richtlinien anzusehen, mit denen wir Nano verwenden können, um durchzusetzen , dass bestimmte Ansprüche vorhanden sein müssen und sie wahrscheinlich sogar auf C ausdehnen können. Sie müssen bestimmte Werte haben, bevor diese Benutzer an bestimmten Orten zugelassen werden können. 28. Durchführen von Richtungen: In Ordnung Leute, also in der Lektion, in der wir hier sind, diskutieren wir, warum es nicht praktisch ist, diese Art von Logik überall zu haben , wenn wir bestimmte Einschränkungen aufgrund von Ansprüchen durchsetzen wollen. In dieser Lektion werden wir uns dieses Konstrukt ansehen, das Policy genannt wird. Diese Reise beginnt also in der Startpunkt-CSS-Datei , in der wir unserem Dienst, seinem Batman, eine Autorisierung hinzufügen müssen. Also mache ich das einfach direkt nach dem Hinzufügen der Standardidentität und lese, bevor die Arterien der Seiten Filter autorisieren. Also sage ich nur, dass ich eine Autorisierung habe, und dann wären die Optionen, die ich einführe, die Richtlinie zu addieren. Und Sie werden sehen, dass ich Richtlinien habe, Punkt ist minimal. Also schauen wir uns das in ein paar an. Das ist nur eine weitere Konstante, die ich erstellt habe. Sie können also einfach Optionen vorantreiben, dass Anzeigenrichtlinien, Richtlinien Punkt Mindestalter sind. Und dann haben wir einen Lambda-Ausdruck, in dem wir sehen, dass die Politik einen Anspruch erfordert, und dann haben wir unsere Ansprüche, die darauf hinweisen, dass dies der Mindestvorteil und dann den Wert ist , den wir erwarten. Also die allgemeine Syntax für das Addieren von Richtlinien und das Hinzufügen der Anforderungen zum Festlegen von Richtlinien auf der grundlegendsten Ebene, etwa dieser, oder? Wir eröffnen gerade einen Optionsblock. Wir sehen Optionspunkt-Advup-Richtlinien. Wir geben der Richtlinie einen Namen. Das hätte also leicht ein ästhetischer Strom sein können. Alles, was ich wirklich mache, ist, auf Konstanten aus einer Klasse zu verweisen, die als Richtlinien bezeichnet wird, auch die militärischen Arrangements mit den Fotos. Denken Sie also daran, dass ursprünglich unsere User-Anspruchsklasse, die unsere statische Klasse mit all unseren Konstanten ist, Strings ursprünglich sind, ich hatte sie auf anderen Diensten, aber nein, ich möchte mehr Konstanten ähnlicher Art, oder? Anstatt sie also alle auf die Identität zu setzen, dass sie in einen eigenen Ordner verschoben wurden, ändern Sie den Namespace auch entsprechend, nein, es sind Konstanten und dann Benutzeransprüche, und dann haben wir Richtlinien, die ihm in diesem Namespace beitreten. Richtlinien werden also nur im Namen der verschiedenen Richtlinien gespeichert , die wir anwendungsübergreifend durchsetzen möchten. Im Startup verweise ich nur auf ungerade Richtlinien, Richtlinien. Punkt ist ein Mindestalter, das ist ein Mindestalter der Saite. Und dann starte ich einen Lambda-Ausdruck bei dem ich sehe, dass dies die Optionen sind, dies sind die Konfigurationen für uns in der Richtlinie. Also hier sehe ich, dass Policy Dots mit diesem Namen gereinigt werden müssen, der das Mindestalter ist. Und der Wert. Und die Wahrheit ist, dass Sie tatsächlich potenziellen Wert auflisten könnten, also muss es sich nicht um eine Datei handeln. Sie könnten einfach dazu kommen, die verschiedenen möglichen Werte zu trennen , die diese Creme haben muss , damit dieser Benutzer als legitimer Kandidat für die Durchführung einer bestimmten Aktion angesehen wird. Was ist, wenn Sie mehr als einen Anspruch in einer bestimmten Richtlinie wünschen? Hier könntest du bei der Richtlinie sehen und dann für diese Lamda-Ausdrücke werden wir einfach mit dem Objektblock starten, oder? Und dann können Sie Policy Dots sehen. Und dann fügen Sie einfach alle Konfigurationen für diese bestimmte Richtlinie entsprechend hinzu. Also Sie nur Semikolon und dann haben Sie Richtlinie erfordert einen weiteren Anspruch mit diesen Wertesätzen , und so weiter, und so weiter. Es ist also wirklich so einfach, eine Richtlinie durchzusetzen oder zu erstellen, von der die Anwendung weiß, dass sie existiert. Also werde ich zu dem einfachen zurückkehren, das ich zuvor hatte, wo wir gerade sehen, dass die Annahme der Richtlinie als Mindestalter bezeichnet wird Mindestalter genannt wird und dann verlangt, dass diese Richtlinie erfordert, dass der Anspruch, leider, ein Mindestalter mit einem Wert von true ist. Jetzt, da wir die Richtlinie definiert haben, müssen wir sie verwenden. Gehen wir also auf unsere Create-Seite. Und wenn du oben siehst, habe ich einen Autor als Filter hinzugefügt. Und statt dieser Berechtigung können Sie Richtlinien ausfiltern , die dem Namen der Richtlinie entsprechen. Das ist also überhaupt ein weiterer Grund. Ein Boot macht die ständigen Klassen und versucht, die Extreme so weit wie möglich zu beseitigen oder zu reduzieren. Denn wenn Sie hier einen Tippfehler haben, wäre es viel schwieriger herauszufinden, warum mich das nicht durchlässt, obwohl ich eindeutig die Richtlinie für saubere Daten sagt, dass ich es brauche, nur weil Sie wahrscheinlich das Falsche verwenden Richtlinienname oder falsch geschriebener Richtlinienname. Es ist also immer gut, diese Strings einfach in Konstanten überall zu haben, eher an einem Ort sind. Sie müssen sie also nicht überall benutzen und dann machen Sie einfach eine Referenz. Auf diese Weise haben wir die Notwendigkeit eliminiert, manuell in die Benutzerbereinigungen zu gehen , und versuchen Sie dann herauszufinden, was die Werte sind. Denn nein, unser autorisierter Mechanismus wird das alles für uns tun. Überall, wo wir eine bestimmte Richtlinie durchsetzen möchten, ist dies alles, was Sie tun müssen. Und wenn Sie einen Filter über eine Seite gelegt haben, überschreibt er natürlich die Standardrichtlinie, die in Ihrer Anwendung enthalten wäre. Dies ist also nur der standardmäßige autorisierte. Also sobald du es dort hingelegt hast. Geld, nun, es wird es außer Kraft setzen und sagen, nun, ich möchte auf der Grundlage dieser Richtlinie autorisieren. Während wir uns mit diesem Thema beschäftigen, werde ich Ihnen einen anderen Weg zeigen, wie wir diese globalen Filter tatsächlich durchsetzen können, was eine globalere Methode wäre, dies in jeder Kernanwendung zu tun. Also wo es sich angeschaut hat, dass Razor-Seiten damit zu tun haben würden, wenn wir Razor-Seiten hinzufügen. Besonders wenn wir es mit MVC machen, würde die Syntax etwas anders aussehen. Aber dann kann ich all dies tatsächlich entfernen und einfach zu den Anwälten von Seiten oder AD-Controllern und Ansichten zurückkehren und weiß, dass ich diesen Autorisierungsblock habe, bei dem alle Richtlinien ausgekleidet sind , unsere Optionen sind online, Ich kann Optionszeilen hinzufügen Ich sehe Optionen Punkt Fall Buck Policy ist gleich dem neuen Autorisierungsrichtliniengenerator. Und dann muss ich weitermachen und die using-Anweisung einbeziehen. Und dann werden wir bei dieser Gesetzesvorlage nur noch ein paar andere Konfigurationen ansprechen. Der erste, den ich sehen werde, ist ein authentifizierter Benutzer. Das bin also, dass ich über der Roboterrichtlinie sitze, wobei die Berechtigungen voll funktionieren. Und wir sehen, dass wir den authentifizierten Benutzer benötigen. Und dann könnte man sagen, Forderung verlangen. Das wäre also nur so, wie ich sagte, global, dies würde nicht angepasst werden, wenn man beaufsichtigt. Wir wollen diese Option. Sie können also alles, was Sie wollen, als globale Autorisierung aufstellen , die Buck-Richtlinie darüber ist, was ist, was soll ich im Grunde tun, wenn dieser autorisierte Filter oder ein niedriger anonymer Filter nicht vorhanden ist? Wenn man also kein Gefängnis ist, Geld wild, wie wir dieses explizit hierher stellen, was mache ich dann? Sehr ähnlich wie wir gerade die globale Berechtigungsvoraussetzung hier hatten. Aber Sie werden mit dieser Methode etwas granularer werden, denn jetzt können wir genau herausstellen, welche Anforderungen, welche Schemata und alles, was wir am Gate-Ziel wollen , von der Standardeinstellung, bevor wir gerade Build aufgerufen haben. Und dann baue ohne Mitspracherecht. Okay, das ist meine Fallbuck-Richtlinie. Immer wenn es keinen Autor als unseren expliziten Autorisierungsfilter mit spezifischen Anforderungen gibt , wollte ich dies tun. Jetzt haben wir also zwei Dinge. Statista, wir werden testen, ob die Richtlinie funktioniert. Was auch immer wir gerade auf dieser Seite bewiesen haben, wenn ein Benutzer unter 18 Jahre alt ist, sollte es nicht in der Lage sein, auf diese Seite zuzugreifen. Und wir werden beweisen, dass wir immer noch die Standardaufforderung erhalten, für alles anzumelden, was angeblich autorisiert ist. Ordnung, also sind wir hier in unserer Bewerbung und letztendlich bin ich zunächst nicht authentifiziert. Ich bin in Kategorien gegangen. Und denk daran, dass Kategorien sein sollen. Es erlaubt nicht anonym. Werbung erlaubt also anonym, durch die ich immer noch blättern kann, da dieser anonyme Filter zulässt , die über die Richtlinie fallen. Und wenn ich dann zu Kategorien gehe, die keine anonymen zulassen, werde ich aufgefordert, mich anzumelden. Das funktioniert also soweit ich sehen kann. Wenn ich mich also als Kunde einlogge, der unter 18 Jahre alt ist, wird das System möglicherweise der Zugriff verweigert, weil ich ein Kunde bin , der sagt, dass er in der Lage sein sollte, die Kategorien zu erhalten, das ist in Ordnung. Aber wenn ich auf Werbung gehe, sollte ich nicht in der Lage sein, neue zu erstellen, da die Richtlinie für das Mindestalter ist. Als ich also versuchte, neu zu erstellen, wird mir der Zugriff verweigert. Richtig. Genau wie. Also genau da. Ich muss nicht manuell zurückgeben, lokaler Direktzugriff dem System verweigert, die Fallback-Richtlinie in Kombination mit meiner expliziten Richtlinie, die ich zum Schutz der Rede verwende, tut das für mich. Es überprüft den Anspruch und es hat ihn umgeschrieben. Das ist also alles, was du wirklich tun musst. Und Sie möchten mit bestimmten Berechtigungen irgendwie granulär werden. Sie erstellen die Ansprüche, die Sie kennen, die Bedürfnisse der Person. Eine Person sollte also in der Lage sein zu bearbeiten, was eine andere Person bearbeiten können sollte. Sie stellen nur sicher, dass es sich um die Ansprüche handelt, die zu keinem Zeitpunkt benötigt werden. Und dann schützen Sie Ihre verschiedenen Seiten einfach mit den Richtlinien, die Sie in Ihrer Startdatei ausgerichtet haben. 29. Section – Forderungen und Rollen: Alles klar Leute, das ist also ein weiterer Meilenstein und wir werden nur überprüfen, was wir in diesem Abschnitt gemacht haben. Also haben wir die grundlegende Autorisierung überprüft und uns angesehen, um zu sehen, wie es in einem Blazer funktioniert, alle Filter waren. Und in unserem Startup hatten wir uns auch angeschaut, wie wir diesen Autor als Filter global über alle Razor-Seiten und im Hinblick auf MVC-Optionen und Controller durchsetzen können , wenn Sie ein solches Gerät verwenden. Seitdem haben wir auch Richtlinien implementiert, bei denen wir wissen, wie wir es globaler machen können, ohne zu mischen und viel in der Syntax, wir können einfach so etwas tun. Wir haben uns auch mit der Erstellung eigener Richtlinien auf der Grundlage von Ansprüchen befasst. Cremes sind also Informationen, die wir Benutzer dynamisch hinzufügen können, sobald das Anmeldewochenende bestimmte Entscheidungen auf der Grundlage der von ihm bereitgestellten Informationen oder basierend auf den erforderlichen Benutzern bestimmt. Und dann können wir diese Ansprüche zu dieser Identität oder dem Anspruchsprinzip hinzufügen , bevor dieser Benutzer tatsächlich im System authentifiziert wird. Als Ergebnis können wir wissen, dass wir Richtlinien implementieren, die es uns ermöglichen, bestimmte Handlungen oder Privilegien auf der Grundlage der Behauptungen, dass sie Gefängnisse haben, einzuschränken oder zuzulassen . Also hatten wir uns auch die Rollen angeschaut. Wir haben uns angeschaut, wie wir einem Benutzer erlauben können, die gewünschte Rolle im System auszuwählen und wie wir ihn anschließend tatsächlich zu dieser Rolle hinzufügen. Wenn es geboren ist, damit sie die Rolle aufteilen können, können Sie die Regel einfach dem Benutzer hinzufügen, sobald er sich angemeldet hat. Denn denken Sie an größere Websites wie Amazon auf YouTube. Sie wählen nicht wirklich die Rolle aus, die Sie mit einem YouTuber-Kegel haben möchten. Sie wissen nur, wenn Sie einen Doppelpunkt erstellt haben, dass Sie ein Benutzer sind. hätten Sie also tatsächlich automatisch als Benutzer durchgemacht. Und dann haben sie einen anderen Mechanismus, bei dem sie ihre eigenen Administratoren und andere Zeilen hinzufügen und so weiter. An diesem Punkt möchten Sie also die Erstellung der Werte im Management-Dashboard prüfen denen Sie die volle Kontrolle über so etwas haben können. Aber für die Benutzer, die über das Internet kommen, geben Sie ihnen ihre Rolle im System, und das ist ihre Rolle in Zukunft. Sie wissen also, basierend auf Ihrem Modell, wie Sie mit dieser Situation umgehen müssen. Letztendlich war's das für diesen Abschnitt. Wie ich schon sagte, ich weiß, dass du einige Dinge durchgemacht hättest. Es ist kein einziger Schuh, der für alle passt. Ich zeige also nur verschiedene Szenarien und verschiedene Möglichkeiten, wie Sie kreativ und praktisch werden können , wie Sie Ihre Anwendung für sich selbst und für Ihre Benutzer sichern. 30. Section – Was ist die in OpenIdConnect: Hey Leute, willkommen zurück. In diesem neuen Abschnitt werden wir OpenID Connect Identitätsanbieter in unseren AP implementieren. Das ist ein Schluck voll, aber ich werde es einfach für dich aufschlüsseln. Also bin ich auf der OpenID dotnet slash Connect-Website und es tut unter direktem Gegenteil von dem, was OpenID Connect wirklich ist. Kurz gesagt, es ermöglicht Kunden. Kunden, die Ihre Website sind, sind Sie auf dem Laufenden, was auch immer Ihr Kunde oder Ihre Benutzer diese Front-Facing verwenden, das ist Ihr Kunde. Es ist ein geringer Stress, die Identität eines Endbenutzers basierend auf der Authentifizierung und der von einem Autorisierungsserver durchgeführten grundlegende Profilinformationen des Endbenutzers auf unsere risikoähnliche Weise zu erhalten . Kurz gesagt, jedes Mal, wenn Sie zu einer App gehen, können Sie sagen, dass unseren Login mit Facebook oder mit Google senden, oder? Ich muss den Potnia-Sitz aufhalten. Geht zu Google und Sie müssen Ihre Anmeldeinformationen eingeben oder vielleicht sind Sie bereits auf diesem Computer oder auf diesem Gerät bei Google angemeldet. Und es ermöglicht Ihnen nur, durchzugehen und plötzlich sind Sie auf den neuen Websites angemeldet alle Informationen, die Google zur Verfügung gestellt hat. Google stellt als diese Fenster einen OpenID Connect Service zur Verfügung, wie dieses Facebook. Und wir haben es uns in den früheren Teilen irgendwie angeschaut , wo wir alle diese Dienste bei Twitter und Google sowie Microsoft und Facebook hinzugefügt haben. All diese können sich als OAuth-Server verdoppeln. Also Auth Provider, tut mir leid, also in diesem Abschnitt werden wir es tatsächlich implementieren. Wir haben es damals nicht gemacht, weil es irgendwie früh im Spiel war. Und ich habe dir ein paar Techniken gegeben, aber wir werden diese Dinge überprüfen. Und was wir tun werden, ist, uns darauf zu konzentrieren, es mit Google zu tun. Aber sobald wir Google aus dem Weg gebracht haben, würden Sie zumindest verstehen, dass Sie, wenn Sie all diese anderen unterstützen möchten und auf dem Weg sind, Ihren Nutzern all diese Optionen geben, dann werden Sie zumindest eine Wertschätzung von wie das gemacht werden kann. Im nächsten Abschnitt werden wir also durchgehen, wie Sie den Schlüssel und das Geheimnis von Google erhalten können . Und dann werden wir uns in Zukunft vollständig in unseren AP integrieren. 31. Anmeldung für Google OAuth: Alles klar Leute, in dieser Lektion werden wir einfach schnell durchgehen , wie wir den Klan-Schlüssel und ein Geheimnis erhalten können , das wir von Google benötigen damit wir uns bei Google-Konten authentifizieren können. Jetzt können Sie zur Cloud-Plattform navigieren, indem Sie zu Console Dot Cloud Dot google.com gehen. Sie müssen sich mit einem Google-Konto anmelden und erhalten dann Zugriff auf dieses Dashboard. Und das wäre für jeden der anderen Anbieter ähnlich. Sie müssen sich mit einem Konto anmelden, das zu diesem Anbieter gehört , um Zugriff auf das Backend zu erhalten, in dem Sie die Schlüssel geben, oder? Nachdem Sie sich angemeldet haben oder Googler-Kegel erstellt haben, haben Sie auf einen ähnlichen Bildschirm wie diesen zugegriffen. Sie möchten zu den Anmeldeinformationen wechseln und klicken dann auf Anmeldeinformationen erstellen. Also auch wenn wir alle diese Optionen wählen, wählen wir OAuth-Client-ID, weil wir danach sind. Und dann geben wir an, welche Art von Anwendung. Ich werde nur eine Webanwendung sagen, bei der Sie sehen, dass Sie verschiedene Optionen haben , und Sie können ihr einen bestimmten Namen geben, wenn Sie möchten, Kleinanzeigen von SQL-Kollegen oder was auch immer Ihr Projekt ist. Und dann gehst du weiter und klickst auf „Erstellen“. Und sobald du auf „Creates“ klickst, gibt dir das diese ID und die sezerniert , und das war's. Sie müssen diese Werte also kopieren. Und denken Sie daran, dass wir diese in unserer App verwenden müssen, damit Sie sie sicher aufbewahren möchten, zumindest was sie nicht laden oder nicht, aber sie sicher aufbewahren oder nein, es macht keinen Sinn, wenn Sie versuchen, meins zu kopieren , denn bis zum Zeitpunkt du machst diesen Kurs, ich hätte die Beweise sowieso vernichtet. Daher empfehle ich Ihnen, es auszuprobieren , Ihren eigenen Schlüssel und Ihr eigenes Geheimnis zu erhalten, und dann können Sie Ihre eigene kontrollierte Erfahrung haben. Wenn wir also wiederkommen, werden wir diese in unseren AP integrieren. 32. Google Auth in die App hinzufügen: Nachdem wir also Schlüssel abgerufen haben, springen wir zurück zu unserem Up und gehen zur Startklasse, in der wir einen neuen Block hinzufügen möchten, in dem wir Dienste sehen werden, die Authentifizierung hinzufügen. Denken Sie also daran, dass wir das letzte Mal oder früher im Kurs, als wir dies tun, den Add Google zu den Diensten hinzugefügt hatten, dem Authentifizierungsblock, in dem wir angegeben haben, dass wir das Cookie verwenden. Alles klar, also hätten wir es tatsächlich entfernen weil wir all die Dinge getan haben, die mit all dem umgehen. Nun, nein, wir können dafür zurückgehen. Und wir werden bei Google hinzufügen, oder? Und welcher andere Anbieter auch immer, vergewissern Sie sich, dass Sie über die erforderliche Bibliothek verfügen. Für diesen Fall, dass Sie die Bibliotheken möglicherweise entfernt haben, da wir sie nicht verwendet haben. Sie müssen auf jeden Fall Microsoft Dot ASP, Core-Authentifizierung Google haben. Wenn Sie es also nicht haben, können Sie es einfach in NuGet-Paketen finden, oder? Und ich habe immer noch alle anderen Pakete von den anderen Anbietern, die wir derzeit möglicherweise nicht verwenden. Aber das sind die Bibliotheken, die Sie benötigen, falls Sie eine der oben genannten Optionen wählen, und nicht unbedingt Google, wie ich demonstriere. Also zurück zum Startup, nachdem wir hinzugefügt haben, möchte Google Optionen sagen. Und dann haben wir unseren Objektblock, in dem wir Google-Optionen sehen. Diese Trend-ID ist das. Und das Geheimnis ist, dass nein, wir haben bereits besprochen, dass es eine schlechte Idee ist, dass man die ID und der geheime Wert im Startup tot ist, die Alternative wäre wahrscheinlich die App-Einstellungen gewesen, aber dann zwischen den beiden von sie, wir werden es auf jeden Fall in die Quellenkontrolle einbringen. Und wenn es sich um eine öffentlich zugängliche Quellcodeverwaltung handelt, wie GitHub, ist Repo öffentlich, dann ist das eine sehr schlechte Idee. Was wir also tun wollen, ist, sie dem Geheimnis hinzuzufügen. Sie klicken also einfach mit der rechten Maustaste auf unsere Projekte. Und dann gehen wir zu Benutzergeheimnisse verwalten, die uns dann unsere geheime Konfigurationsdatei geben, oder? Also hatte ich es schon irgendwie mit der Kunden-ID und dem Geheimnis nachgerüstet. Also nein, ich kann praktisch sehen, wie es benutzt wird. Also werden wir diesen Wert annehmen. Das ist also die Client-ID. Setzen Sie es hier ein, dies ist eine Kunden-ID für Google. Und dann machen wir das Gleiche mit dem Geheimnis, legen es für das Geheimnis hier rüber. Und noch einmal folgen Sie dem gleichen Muster für Facebook, Twitter und so weiter. Stimmt's? Sobald wir das alles gemacht haben, werden wir Konfiguration und Konfiguration sagen. Und der Schlüssel, den wir wollen, wäre die Google-Colon-Client-ID. Also Google-Colon-Client-ID. Und dann würden wir das für das Geheimnis wiederholen. Es ist also ein Doppelpunkt und ich habe Geheimnisse sequenziert. Es ist also kein Doppelpunkt-Client-Geheimnis und genau das, dass wir sicher hinzugefügt haben die Authentifizierungsschlüssel und Geheimnisse für unsere Anwendung Schlüssel und Geheimnis sind? Nein. Nachdem wir diese Authentifizierungskonfiguration hinzugefügt haben und schauen Sie sich an, was passiert, wenn wir zum Anmeldebildschirm gehen. Auf der rechten Seite werden Sie sehen, dass Sie den Dienst Google haben, um rot zu verwenden. Denken Sie also daran, als wir das Geld gemacht haben, naja die seltsamen, die sie tatsächlich alle Facebook, Twitter usw. aufgelistet haben. Wir haben den Modus aufgelistet, wissen, dass die gerüstbaute Anmeldeseite bereits den Mechanismus hatte, erinnern Sie sich, dass Sie hier ein wenig über die externen Anbieter geschrieben haben und so weiter. Denn was in der Datei oder im dahinter liegenden Code passiert, ist, dass es so ist, lassen Sie mich einfach schnell Login-Logik finden und bekommen, es heißt, Holen Sie mir die externen Authentifizierungsschemata mit freundlicher Genehmigung von Sand in Manager, San und Monitor ist tatsächlich zum Startup gehen und sagen, gibt es irgendwelche anderen Schemata, die hier im Startup definiert sind, das wir gesehen haben, oh ja, du hast Google. Okay, also fügen wir den Google-Button für Sie hinzu. Stimmt's? also keine gibt, die sie richtig oder anderweitig bekommen, listen Sie sie auf der Anmeldeseite Wenn es also keine gibt, die sie richtig oder anderweitig bekommen, listen Sie sie auf der Anmeldeseite auf. Erstellen Sie für jeden einen einfach eine Schaltfläche mit dem Anbieternamen. Das ist alles, was wirklich passiert, oder? Also manchmal, weißt du, ein Handgemenge diese Dinge und wir sehen sie selbst. Wir brauchen das nicht, ich werde sie einfach entfernen, aber es ist immer gut zu verstehen, warum Sie bestimmte Dinge zu einer bestimmten Zeit sehen, welche Konfigurationen benötigt werden, um bestimmte Dinge zum Laufen zu bringen? Und das ist sicherlich eine der Konfigurationen, die Sie selten sehen. Leute nehmen sich tatsächlich die Zeit oder gehen Schritt für Schritt durch und helfen Ihnen zu verstehen. So würden Sie also im Grunde anfangen, sie hinzuzufügen. Und ich konnte so viele wie Sie hier verketten, wie wir es bei Twitter, Facebook usw. gesehen haben . So viele wie deine Kette, du bekommst diese Knöpfe automatisch. Also mache ich das nur Schritt für Schritt nach und nach. Wenn wir wiederkommen, werden wir gemeinsam testen, wie diese Login-Logik funktioniert. 33. Google Auth: Alles klar Leute, also sind wir zurück und das Ziel dieses Mal ist es, zu überprüfen, ob unser Protokoll tatsächlich funktioniert. Der erste Schritt 1 ist also, zur Anmeldeseite zu gehen. Schritt zwei ist also, auf den blauen Button zu klicken. Wenn wir also auf Google klicken, werden Sie feststellen, dass es von unserer Rechten weg navigiert. Also sind wir bei localhost etwas, und wenn wir dann darauf klicken, navigiert es tatsächlich immer. Stellen Sie also sicher, dass Sie Internet haben, wenn Sie dies abseits des Kurses machen. Und es versucht, zu einem Doppelpunkt-Schrägstrich zu gehen google.com anzumelden und sie geben uns einen Fehler. Der Fehler hier ist also ein 400, was eine schlechte Anfrage bedeutet. Und das ist der Grund, warum die Umleitung von URIs nicht übereinstimmt. Also geben sie dir ein wenig zu lesen. Und wieder liest SEO etwas, nur um sicherzustellen, dass ich es vollständig verstanden habe. Und wenn Sie auf Details anfordern klicken, werden sie Ihnen mitteilen, ob Sie der Entwickler sind, stellen Sie sicher, dass diese Anforderungsdetails den Google-Richtlinien entsprechen. Sie geben Ihnen also, was der Umleitungs-URI sein muss, nämlich localhost, von dem sie wissen, woher Sie kommen. Aber du musst diesen Endpunkt auf seiner Sohle haben. Ich kopiere dies und gehe dann zurück zu meinem Anmeldeinformationen Manager und dem von uns erstellten Client, denselben mit der App-ID. Und das Geheimnis, was Sie tun möchten, ist, zu den autorisierten Umleitungs-URIs zu gehen. Also fügst du Ury hinzu und gibst dann diese URL oder den Harnstoff ein, diesen Link. Und dann klickst du auf Speichern. Und sobald das gespeichert ist, ich einfach auf OK. Und dann klicken wir erneut auf Google. Und dieses Mal wirst du sehen, dass es mich nicht darum bittet, mich mit meinem Icon anzumelden. Also mache ich genau das. Und nachdem ich meine E-Mail-Adresse Passwort angegeben habe und möglicherweise für zwei Personen bei einer Verifizierung durch Google angefordert wurde, werde ich nicht zu dieser Seite geführt, auf der es heißt: Möchten Sie Ihre Google Up-Kegel zuordnen? Und dann geben sie dir die E-Mail-Adresse und bitten dich, dich zu registrieren. Jetzt würden Sie sehen, dass die Seite, durch die sie navigiert, ist Identitätsschrägstrich-Schrägstrich externe Anmeldung. Und die Rückgabe-URL ist genau was auch immer die Achse ist, oder? Das ist also die Seite, die Sie ändern können. Wissen Sie, ob Sie dem Benutzer mehr Details hinzufügen oder erlauben möchten , als nur seine E-Mail-Adresse hinzuzufügen. Weil sich diese E-Mail-Adresse als Benutzername verdoppeln wird und sie keinen Vornamen, Nachnamen usw. haben. Zugegeben, Sie können die Einstellungen wahrscheinlich etwas mehr mit Google optimieren , um weitere Informationen von Google, einem Boot, diesem Benutzer zu erhalten , damit ich mein System ausfüllen kann. Ich werde nicht auf all diese Dinge eingehen, oder? Nein. Sie können also jetzt darauf achten, eine andere Sache, die Sie möglicherweise erhalten, ist einer dieser 400-Fehler, nachdem Sie versucht haben, sich mit Google-Anmeldeinformationen Möglicherweise erhalten Sie dieselbe 400-Seite. Wenn Sie dies tun, können Sie wahrscheinlich hierher zurückkehren und einfach die URL hinzufügen , ohne dass diese Schleifmaschine es einfach als einen weiteren URI hinzufügen. Denn was passiert, ist, dass diese URLs Google mitteilen, wonach mein Kunde suchen sollte, wenn er mit Google fertig ist. Also unser, was Googles es versuchen sollte, zurück zu navigieren, wenn es fertig ist, sein Ding zu erledigen. Das ist also ein Teil dieser Sicherheit. Denken Sie daran, als wir über das Einrichten der sicheren Registrierung und des Logins gesprochen haben, wie wir immer die Weiterleitung durchführen, die lokalen Weiterleitungen, damit wir sicherstellen, dass wir zu einer Seite in unserem AP umleiten , die dem ähnelt, was Google versucht erreichen Sie hier, um zu sehen, nach welcher Domain sollte ich immer suchen , wenn ich mit der Authentifizierung dieser Person fertig bin? Sie müssen also am Ende einen weiteren Eintrag hinzufügen und es ist im Blut auf Yuri. Habe da und keinen Schaden gerettet, gelesen oder geschrieben irgendein ganzes Geld an uns. Sobald ich auf „Registrieren“ klicke, muss ich die Kegel bestätigen. Das ist in Ordnung. Wir wissen, dass dies das Standardverfahren ist, aber ich wollte uns in die Datenbank bringen, damit wir sehen können, was passiert. In der Datenbank sehen Sie also einen neuen Benutzer, der mit der E-Mail-Adresse erstellt wurde. Ich kann das einfach von hier aus auf wahr setzen. Und der Sicherheitsstempel, all diese Dinge, kein Passwort, kein Passwort ist erforderlich, da wir das Passwort für diesen Benutzer nicht behandeln und dies ist ein Google-Nutzer. All die Dinge, die Benutzerergebnisse erstellt werden, wenn wir mit den ASP NET-Benutzeranmeldungen gehen, würden auch bemerken, dass wir einen neuen Eintrag erhalten, in dem wir den Anbieter, den Anbieterschlüssel, den Anzeigenamen und den Benutzer kennen , für den diese Anmeldung ist zugeschrieben. 34. OAuth Abschnitt: Ordnung Leute, also haben wir uns in diesem Abschnitt angeschaut, wie Sie Google-Authentifizierung einrichten können. Und im weiteren Fall können dieselben Techniken für andere Auth-Anbieter von Drittanbietern angewendet werden . Wir verwenden Google nur, weil vielleicht mehr als wahrscheinlich ein Google Mail-Konto oder Google-Konto vorhanden sind. Und es ist viel einfacher, einfach damit anzufangen. Beide Techniken können auf der ganzen Linie angewendet werden. Bestimmte Dinge, die wir tun müssen. Erstens müssen wir auf diese Drittanbieterplattform gehen, was auch immer es ist, ob Google oder Windows oder Twitter oder Facebook, wir müssen dorthin gehen und einen neuen Webclient registrieren. Und das würde uns die notwendigen Schlüssel- und Authentifizierungsdaten geben , die wir für die Autorisierung unserer App benötigen. Wir müssen auch Autorisierungs-Umleitungs-URLs basierend auf unseren Domain-Adressen erstellen. Und danach würden wir ermutigt, zu unserer Anwendung zurückzukehren und Benutzergeheimnisse hinzuzufügen und unsere Client-ID und unser Geheimnis dort zu speichern, anstatt in der regulären Konfiguration oder im Klartext im Code, oder? Sie möchten diese Geheimnisse also dem AP hinzufügen und entsprechend darauf zugreifen. Wir fügen das Authentifizierungsschema oder Schemas hinzu, basierend darauf, wie viele Sie haben. Und sobald dies erledigt ist, rendert die App sie automatisch basierend auf dem Boilerplate-Code aus unserem gerüsteten Login und registriert Seiten. Wissen Sie, nachdem wir uns als Google-Kontoinhaber authentifizieren konnten, können wir uns anmelden und die gleichen Berechtigungen wie ein regulärer Benutzer werden hier angewendet. Nein, Sie werden eindeutig sehen, dass es bestimmte Dinge gibt, fehlen, weil wir nichts über das Geburtsdatum wissen, wir kennen den vollständigen Namen nicht. Es gibt also bestimmte Informationen, die wir dem Benutzer ermöglichen können danach zu verwalten, oder wir können vom Drittanbieter abschreiben, wenn wir den Spielraum und die Hebelwirkung geben. Weil es nur bestimmte Standardinformationen gibt , die sie Geld geben werden. Also Namenskennung, das bekommen wir. Klar. Nun, ihr Name, ihre E-Mail-Adresse, die stammen aus dem Benutzerdatensatz. Und hier sehen wir, dass dies eine Authentifizierungsmethode von Google hat. Wenn wir zu externen Logins gehen, sehen Sie Google. Also personenbezogene Daten und alles. Sie würden ihnen wahrscheinlich erlauben wollen, diese Dinge in ihrem Profil geldweise zu verwalten. So können Sie Vorname, Nachname und Geburtsdatum hinzufügen . Also lade ich diese authentifizierte Person eines Drittanbieters, um ihre Kegel zu erstellen, fülle dann aber die Details danach ein. Es gibt also eine Reihe von Möglichkeiten, wie ich schon sagte, es ist keine Einheitsgröße. Sie müssen die Tetanie finden, die für Sie und Ihre Benutzer und Ihre Situation funktioniert. abgesehen haben wir jedoch erfolgreich die Google-Authentifizierung in unserem Dotnet Core eingerichtet. 35. Schlussbemerkung: Alles klar Leute, also sind wir zu einem weiteren Meilenstein gekommen und haben diesen Kurs abgeschlossen. In diesem Kurs erfahren Sie, wie Sie Authentifizierung und Autorisierung in Ihrer Dotnet Core-Anwendung implementieren . Es hat dir nicht nur beigebracht, wie das geht, denn die Realität ist, dass wir all diese Funktionen tatsächlich auf der grundlegendsten Ebene aus der Box bringen können . Aber wir haben die Vor- und Nachteile untersucht, wie alle Teile zusammenpassen, um uns eine nette sichere Anwendung zu bieten. Wir haben uns auch angeschaut, dass Sie vorsichtig sein müssen, wenn Sie Sicherheitsmaßnahmen mit Benutzerfreundlichkeit in Einklang bringen, da Sie Ihren AP dann möglicherweise so sicher machen, dass er kaum nutzbar ist. Und auf der anderen Seite möchten Sie nicht, dass es sehr brauchbar, aber nicht sehr sicher ist. Sie möchten diese Dinge also immer in Betracht ziehen. Es ist immer eine Sache zu tun. Ein Tutorial oder ein Kurs, in dem wir Ihnen beibringen, wie Sie dieses System aufbauen und ein wenig von dieser und jener Funktion streuen. Aber es ist eine andere Sache, wenn Sie sich hinsetzen und sich diesen Feature-Set und diese Bibliothek in seiner Gesamtheit ansehen und all die Feinheiten, die Sie bei Ihren bevorstehenden Entwicklungs- und Designüberlegungen unterstützen können, voll und ganz schätzen . In diesem Kurs haben wir die Grundlagen ziemlich ausgeschöpft. Und wir haben uns die Grundlagen angeschaut und uns einige fortgeschrittene Dinge angeschaut , die wir uns angeschaut haben, damit Sie erweitern können, was aus der Box kommt. Wir schauen uns an, wie Sie nutzen können, was aus der Box kommt und wie all diese Dinge zusammenpassen. Ich möchte mich bei dir bedanken, dass du auf dieser Reise bei mir geblieben bist. Und ich hoffe, dass Sie das, was Sie aus diesem Kurs gelernt haben, nehmen und eine schöne, sichere Anwendung für sich und Ihre Benutzer erstellen können.