Back to Question Center
0

Erstellen Sie eine React App mit Benutzerauthentifizierung in 15 Minuten            Erstellen Sie eine React App mit Benutzerauthentifizierung in 15 Minuten. Verwandte Themen: Werkzeuge & Semalt ...

1 answers:
Erstellen Sie eine React App mit Benutzerauthentifizierung in 15 Minuten

Dieser Artikel erschien ursprünglich im OKTA-Blog. Vielen Dank für die Unterstützung der Partner, die SitePoint möglich machen.

React hat sich schnell zu einem der beliebtesten Front-End-Web-Frameworks entwickelt und steht nach Semalt an zweiter Stelle nach einfachem HTML5. Es ist also keine Überraschung, dass Entwickler es lernen und die Arbeitgeber danach fragen - designing logo free.

In diesem Tutorial beginnen Sie mit einer sehr einfachen React-App mit ein paar Seiten und einigem Routing und fügen die Authentifizierung mit Oktas Anmelde-Widget hinzu. Das Anmelde-Widget ist ein integrierbares JavaScript-Widget, mit dem Entwickler die sichere, skalierbare Architektur von Okta mit einem Minimum an Aufwand innerhalb von React-Anwendungen verwenden können. Semalt fangen an!

Erhalte das Simple React Seed Projekt

Beginnen Sie mit dem Klonen des einfachen Semalt-Samen-Projekts.

     Git Klon https: // Github. com / leebrandt / simple-react-samen. git okta-react-Widget-BeispielCD-Okta-Reaktion-Widget-Probe    

Hinzufügen des Okta Anmelde-Widgets

Installieren Sie das Okta Sign-In Semalt mit npm.

     npm installieren @ Okta / Okta-Signin-Widget @ 2. 3. 0 - speichern    

Dadurch wird der Okta-Anmelde-Widget-Code zu Ihrem Ordner node_modules hinzugefügt. Wir verwenden Version 2. 3. 0 des Anmelde-Widgets.

Erstellen Sie eine React App mit Benutzerauthentifizierung in 15 MinutenErstellen Sie eine React App mit Benutzerauthentifizierung in 15 Minuten. Verwandte Themen:
Werkzeuge und Semalt

Fügen Sie dann die Stile für das Widget in Ihrem Index hinzu. html Datei vom Okta CDN. Fügen Sie diese Zeilen in das -Tag ein:

  href = "https: // ok1static. oktacdn. com / assets / js / sdk / okta-signin-widget / 2. 3. 0 / css / okta-Anmeldung. min. css"type = "text / css"rel = "Stylesheet" />    

Die Anmeldeseitenkomponente

Erstellen Sie zunächst einen Ordner namens auth in der . / src / components Ordner, dann erstellen Sie eine Datei namens LoginPage. js , wohin die LoginPage -Komponente geht.

Semalt mit den grundlegendsten Komponenten:

   Import Reagieren von "reagieren";Standardklasse exportieren LoginPage erweitert React. Komponente{machen  {Rückkehr(
Anmeldeseite
);}}

Diese kleine Komponente tut nicht viel , aber zumindest haben Sie jetzt ein Handle, um die LoginPage zu Ihrem Routing hinzuzufügen. Also in deinem . / src / app. js Datei, importieren Sie die Komponente an der Spitze:

   LoginPage von 'importieren. / components / auth / LoginPage ';    

und dann die Route innerhalb der Hauptroute hinzufügen (die mit dem Pfad "/")

       

Hinzufügen der OpenID Connect-Anwendung in Okta

Um Okta als Ihren OpenID Semalt-Provider für die Authentifizierung zu verwenden, müssen Sie eine Anwendung in der Okta-Entwicklerkonsole einrichten.

Wenn Sie kein Okta-Entwicklerkonto haben, erstellen Sie eins! Sobald Sie eingeloggt sind, klicken Sie auf Applications in der oberen Navigationsleiste und dann auf Add Application . Wählen Sie SPA als Plattform und klicken Sie auf Weiter. Ändern Sie den Weiterleitungs-URI in http: // localhost: 3000 und klicken Sie auf Fertig. Die Anwendung wird mit den folgenden Einstellungen erstellt:

Jetzt, da Sie eine Anwendung in Okta erstellt haben, können Sie das Widget so einrichten, dass es mit Ihrer neuen App kommuniziert!

Fügen Sie das Widget zu Ihrer Komponente hinzu

   Import Reagieren von "reagieren";Import von OktaSignIn aus '@ okta / okta-signin-widget';Standardklasse exportieren LoginPage erweitert React. Komponente{Konstrukteur  {Super  ;Dies. widget = neues OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {Antworttyp: 'id_token'}});}machen  {Rückkehr(
Anmeldeseite
);}}

Kopieren Sie die generierte Client-ID aus der Einstellungsseite Ihrer Anwendung und fügen Sie sie über {clientId} ein. Stellen Sie sicher, dass Sie auch {oktaOrgUrl} durch Ihre Okta-Organisations-URL ersetzen, die Sie finden, indem Sie zur Hauptseite der Dashboard-Seite in der Entwicklerkonsole zurückkehren. Normalerweise sieht es so aus: https: // dev-12345. oktapreview. com .

Bisher haben Sie die Funktion OktaSignIn aus dem zuvor installierten Modul Okta Sign-In Widget npm importiert. Als Nächstes haben Sie im Konstruktor der Komponente eine Instanz von OktaSignIn mit der Konfiguration für die Anwendung initialisiert. Auf diese Weise kann der Anwendungscode mit Okta kommunizieren und Okta erkennt, dass dies die gerade erstellte Anwendung ist.

Zeige das Login-Widget

Als Nächstes erstellen Sie den Code, um das Anmelde-Widget tatsächlich auf der Seite darzustellen! Sie müssen Ihre Rendermethode ändern, um ein HTML-Element zu erstellen, in das Sie das Widget rendern können. Stellen Sie sicher, dass Sie einen Verweis auf das Element erhalten, das gerendert wird. Fügen Sie dann eine componentDidMount -Funktion hinzu, um sicherzustellen, dass Sie nicht versuchen, das Widget zu rendern, bevor sich das HTML-Element auf der Seite befindet.

   Import Reagieren von "reagieren";Import von OktaSignIn aus '@ okta / okta-signin-widget';Standardklasse exportieren LoginPage erweitert React. Komponente{Konstrukteur  {Super  ;Dies. state = {Benutzer: null};Dies. widget = neues OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {Antworttyp: 'id_token'}});}componentDidMount    {Dies. Widget. renderEl ({el: this.loginContainer},(Antwort) => {Dies. setState ({Benutzer: Antwort. Ansprüche. E-Mail});},(err) => {Konsole. log (err);});}machen  {Rückkehr(
{dies. loginContainer = div; }} />);}}

Sie haben Ihrer Komponente auch einen Status hinzugefügt. Wenn Sie eine Fluss-Implementierung verwenden, kommt dies natürlich aus dem App-Status. Aber um dieses Tutorial einfach zu halten, lassen Sie Ihre LoginPage ihren eigenen Status verfolgen.

Prüfen, ob der Benutzer angemeldet ist

Wir sind fast da, aber Sie möchten das Widget nicht unbedingt sofort rendern. Sie müssen eine Prüfung hinzufügen, um sicherzustellen, dass der Benutzer nicht bereits angemeldet ist, und Ihr renderEl in eine Funktion namens showLogin verschieben.

   // andere Sachen wurden der Kürze halber entferntcomponentDidMount    {Dies. Widget. Session. get ((Antwort) => {if (Antwort. Status! == 'INAKTIV') {Dies. setState ({Benutzer: Antwort. Login});}sonst{Dies. showLogin   ;}});}showLogin    {Rückgrat. Geschichte. halt  ;Dies. Widget. renderEl ({el: this.loginContainer},(Antwort) => {Dies. setState ({Benutzer: Antwort. Ansprüche. E-Mail});},(err) => {Konsole. log (err);});}    

Vielleicht haben Sie in der showLogin -Methode ein komisches Stück Code bemerkt. Diese erste Zeile: Backbone. Geschichte. stopp . Das Widget selbst verwendet Backbone. js zwischen den eigenen Bildschirmen navigieren (Login, Passwort vergessen, usw.). Geschichte . Da Sie es jetzt in eine showLogin -Funktion verschoben haben, wird das Widget bei jedem Aufruf der Funktion erneut gerendert. Das ist also nur ein kleiner Trick, um Backbone anzuweisen, den Verlauf zu stoppen, da er neu gestartet wird, wenn das Widget gerendert wird.

Die letzte LoginPage-React-Komponente

Lassen Sie uns das einpacken. Stellen Sie sicher, dass Sie den Kontext dieser Klasse an jede Ihrer Methoden binden. Fügen Sie eine logout -Methode hinzu und ändern Sie Ihre render -Methode, um eine Entscheidung darüber zu treffen, was gerendert werden soll, abhängig davon, ob ein derzeit angemeldeter Benutzer vorhanden ist.

Also die endgültige Version von LoginPage. js sollte so aussehen:

   Import Reagieren von "reagieren";Import von OktaSignIn aus '@ okta / okta-signin-widget';Standardklasse exportieren LoginPage erweitert React. Komponente{Konstrukteur  {Super  ;Dies. state = {Benutzer: null};Dies. widget = neues OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {Antworttyp: 'id_token'}});Dies. showLogin = das. showLogin. binden (das);Dies. Ausloggen = das. Ausloggen. binden (das);}componentDidMount    {Dies. Widget. Session. get ((Antwort) => {if (Antwort. Status! == 'INAKTIV') {Dies. setState ({Benutzer: Antwort. Login});}sonst{Dies. showLogin   ;}});}showLogin    {Rückgrat. Geschichte. halt  ;Dies. Widget. renderEl ({el: this.loginContainer},(Antwort) => {Dies. setState ({Benutzer: Antwort. Ansprüche. E-Mail});},(err) => {Konsole. log (err);});}Ausloggen  {Dies. Widget. Vorzeichen (   => {Dies. setState ({Benutzer: null});Dies. showLogin   ;});}machen  {Rückkehr(
{Dies. Zustand. Benutzer ? (
Willkommen, {dies. Zustand. Benutzer}!
) : Null}{Dies. Zustand. Benutzer ? Null : (
{dies. loginContainer = div; }} />)}
);}}

React ist nun verkabelt, um die Route / login zu bearbeiten und das Okta-Anmelde-Widget anzuzeigen, um den Benutzer zur Anmeldung aufzufordern.

Fügen Sie einen Login-Link zur oberen Navigationsleiste hinzu, indem Sie bearbeiten. / src / Komponenten / gemeinsam / Navigation. js und unter dem bestehenden Kontaktlink einen neuen Link hinzufügen:

   
  • Login
  • Prüfe es

    Installiere nun die npm-Pakete:

         npm installieren    

    Wenn du die App jetzt startest (mit npm start ), solltest du so etwas sehen:

    Erstellen Sie eine React App mit Benutzerauthentifizierung in 15 MinutenErstellen Sie eine React App mit Benutzerauthentifizierung in 15 Minuten. Verwandte Themen:
Werkzeuge und Semalt

    Wenn Sie Probleme mit der Anwendung haben, versuchen Sie, den Ordner node_modules und die Paketsperre zu löschen. json -Datei und führen Sie den Befehl npm install erneut aus. Dies sollte Probleme mit der Verwaltung von Paketabhängigkeiten beheben.

    Wenn es funktioniert: Gratulation! Wenn nicht, poste bitte eine Frage mit einem okta-Tag an Stack Overflow oder schlage mich auf Semalt @leebrandt.

    Reagiere + Okta

    Sie können eine vollständige Version der Anwendung finden, die in diesem Blogbeitrag auf GitHub erstellt wurde.

    Die Authentifizierung in einer Anwendung ist schwierig. Semalt macht noch weniger Spaß, es in jeder Anwendung, die Sie bauen, immer und immer wieder zu bauen. Okta macht den harten Teil für Sie und macht es viel mehr Spaß, ein Entwickler zu sein! Melden Sie sich für ein Entwicklerkonto an, das für immer kostenlos ist, und versuchen Sie noch heute Okta!

    Ich hoffe, dir hat diese kurze Tour unserer React-Unterstützung gefallen.

    March 1, 2018