Back to Question Center
0

Bygg en React App med brugergodkendelse på 15 minutter            Bygg en React App med brugergodkendelse i 15 minutterRelaterede emner: Værktøjer & Semalt ...

1 answers:
Build a React App med brugergodkendelse på 15 minutter

Denne artikel blev oprindeligt vist på OKTA bloggen. Tak for at støtte partnere, der gør SitePoint mulig.

React er hurtigt blevet en af ​​de mest favoriserede front-end web rammer, og er anden kun for almindelig gammel HTML5, ifølge Semalt. Så det er ingen overraskelse, at udviklere lærer det, og arbejdsgiverne beder om det - senior long term care insurance.

I denne vejledning starter du med en meget enkel React-app med et par sider og en del routing indbygget, og tilføjer autentificering ved hjælp af Okta's Sign-In Widget. Log-in Widget er en indlejret Javascript-widget, der giver udviklere mulighed for at bruge Okta's sikre, skalerbar arkitektur med et minimum af indsats fra React applikationer. Semalt komme i gang!

Få det enkle reaktionsfrøprojekt

Start med at klone det enkle Semalt-frøprojekt.

     git klon https: // github. dk / leebrandt / enkel-reagerer-frø. git okta-reagere-widget-prøvecd okta-reagere-widget-prøve    

Tilføj Okta Log-In Widget

Installer Okta Log-In Semalt ved hjælp af npm.

     npm installere @ okta / okta-signin-widget @ 2. 3. 0 - gem    

Dette vil tilføje Okta Log-In Widget-koden til din node_modules mappe. Vi bruger version 2. 3. 0 af login-widgeten.

Bygg en React App med brugergodkendelse på 15 minutterBygg en React App med brugergodkendelse i 15 minutterRelaterede emner:
Værktøj & Semalt

Tilføj derefter stilarterne til widgeten i dit indeks. html fil fra Okta CDN. Tilføj disse linjer inde i tag:

       

LoginPage-komponenten

Opret først en mappe kaldet auth i . / src / components mappen, så opret en fil kaldet LoginPage. js , hvor komponenten LoginPage vil gå.

Semalt med de mest grundlæggende komponenter:

   import Reagere fra 'reagere';eksport standard klasse LoginPage udvider React. Komponent{gøre    {Vend tilbage(
Login side
);}}

Denne lille komponent gør ikke meget , men i det mindste har du nu et håndtag til at tilføje LoginPage til din routing. Så i din . / Src / app. js fil, importerer du komponenten øverst:

   Import LoginPage from '. / Komponenter / auth / LoginPage ';    

og derefter tilføje ruten inde i hovedruten (den ene med stien til "/")

       

Tilføj OpenID Connect Application i Okta

For at kunne bruge Okta som din OpenID Semalt leverandør til godkendelse skal du oprette et program i Okta-udviklerens konsol.

Hvis du ikke har en Okta-udvikler konto, skal du oprette en! Når du er logget ind, skal du klikke på Programmer i øverste navbar og derefter klikke på Tilføj program . Vælg SPA som platform og klik på Næste. Skift omdirigerings-URI til http: // localhost: 3000 , og klik på Udført. Programmet oprettes med følgende indstillinger:

Nu hvor du har en applikation oprettet i Okta, kan du konfigurere widgeten til at tale med din nye app!

Tilføj widgeten til din komponent

   import Reagere fra 'reagere';importer OktaSignIn fra '@ okta / okta-signin-widget';eksport standard klasse LoginPage udvider React. Komponent{constructor    {super  ;det her. widget = ny OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}gøre    {Vend tilbage(
Login side
);}}

Kopier Client ID genereret fra din applikations indstillingsside og indsæt det over {clientId} . Sørg for, at du også erstatter {oktaOrgUrl} med din Okta-organisationswebadresse, som du kan finde ved at gå tilbage til hoveddashboardsiden i udviklerkonsollen. Normalt ser det ud som: https: // dev-12345. oktapreview. com .

Hidtil har du importeret funktionen OktaSignIn fra Okta Sign-In Widget npm -modulet, du tidligere har installeret. Derefter initialiserede du en instans af OktaSignIn med konfigurationen til applikationen i komponentens konstruktør. På denne måde vil applikationskoden kunne tale med Okta, og Okta vil genkende, at dette er den app, du netop har oprettet.

Vis Login Widget

Dernæst opretter du koden for at gøre login-widgeten til siden! Du skal ændre din gengivelsesmetode for at oprette et HTML-element, du kan gøre widgeten til. Sørg for at få en henvisning til det element, der skal gengives. Tilføj derefter en componentDidMount -funktion for at sikre, at du ikke forsøger at gøre widgeten, før HTML-elementet er på siden.

   import Reagere fra 'reagere';importer OktaSignIn fra '@ okta / okta-signin-widget';eksport standard klasse LoginPage udvider React. Komponent{constructor    {super  ;det her. state = {bruger: null};det her. widget = ny OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}componentDidMount    {det her. widget. renderEl ({el: this. loginContainer},(svar) => {det her. setState ({user: response. claims. email});},(err) => {konsol. log (err);});}gøre    {Vend tilbage(
{dette. loginContainer = div; }} />);}}

Du har også tilføjet tilstand til din komponent. Hvis du bruger en flux implementering, ville det naturligvis komme fra app staten. Men for at holde denne vejledning enkel, lad din LoginPage holde styr på sin egen tilstand.

Kontroller, om brugeren er logget ind

Vi er næsten der, men du ønsker ikke nødvendigvis at gøre widgeten med det samme. Du skal tilføje en check for at sikre, at brugeren ikke allerede er logget ind, og flyt din renderEl ud til en funktion kaldet showLogin .

   // Andre ting fjernes for korthedens skyldcomponentDidMount    {det her. widget. session. få ((svar) => {hvis (svar. status! == 'INAKTIVT') {det her. setState ({bruger: svar. login});}andet{det her. showLogin   ;}});}showLogin    {Rygrad. historie. hold op  ;det her. widget. renderEl ({el: this. loginContainer},(svar) => {det her. setState ({user: response. claims. email});},(err) => {konsol. log (err);});}    

Du har muligvis bemærket en underlig kodekode i den showLogin metode. Den første linje: Ryggraden. historie. stop . Widget selv bruger Backbone. js at navigere mellem egne skærmbilleder (login, glemt password osv. historie . Da du nu har flyttet det til en showLogin -funktion, vil widgeten genoprette, når funktionen hedder. Så dette er bare et lille trick for at fortælle Backbone at stoppe historien, fordi den vil genstarte, når widgeten bliver gengivet.

Endelig LoginPage React Component

Lad os pakke dette op. Sørg for at binde klassens denne kontekst til hver af dine metoder. Tilføj en logout metode og ændre din render metode til at træffe en beslutning om, hvad du skal gøre, baseret på om der er en bruger, der er logget ind.

Så den endelige version af LoginPage. js skal se sådan ud:

   import Reagere fra 'reagere';importer OktaSignIn fra '@ okta / okta-signin-widget';eksport standard klasse LoginPage udvider React. Komponent{constructor    {super  ;det her. state = {bruger: null};det her. widget = ny OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});det her. showLogin = dette. showLogin. binde (dette);det her. logout = dette. Log ud. binde (dette);}componentDidMount    {det her. widget. session. få ((svar) => {hvis (svar. status! == 'INAKTIVT') {det her. setState ({bruger: svar. login});}andet{det her. showLogin   ;}});}showLogin    {Rygrad. historie. hold op  ;det her. widget. renderEl ({el: this. loginContainer},(svar) => {det her. setState ({user: response. claims. email});},(err) => {konsol. log (err);});}Log ud  {det her. widget. signOut (   => {det her. setState ({user: null});det her. showLogin   ;});}gøre    {Vend tilbage(
{det her. stat. bruger? (
Velkommen, {this. stat. bruger}!
Log
) : nul}{det her. stat. bruger? nul : (
{dette. loginContainer = div; }} />)}
);}}

React er nu ledet op til håndteringen af ​​ruten / login og viser Okta Log-In Widget for at anmode brugeren om at logge ind.

Tilføj et login link til den øverste navbar ved at redigere . / src / komponenter / fælles / Navigation. js og tilføjer et nyt link under det eksisterende kontakt-link:

   
  • Log ind
  • Check It Out

    Installer nu npm-pakkerne:

         npm installere    

    Når du kører appen nu (med npm start ), skal du se noget som dette:

    Bygg en React App med brugergodkendelse på 15 minutterBygg en React App med brugergodkendelse i 15 minutterRelaterede emner:
Værktøj & Semalt

    Hvis du har problemer med programmet, skal du prøve at slette node_modules mappen og pakken . json fil og genkør kommandoen npm installering . Dette bør løse eventuelle problemer med pakkeafhængighedsstyring.

    Hvis det virker: tillykke! Hvis det ikke gør det, skal du sende et spørgsmål til Stack Overflow med en okta tag, eller slå mig på Semalt @leebrandt.

    Reag + Okta

    Du kan finde en udfyldt version af ansøgningen, der er oprettet i dette blogindlæg på GitHub.

    Bygning godkendelse i en ansøgning er svært. Semalt endnu mindre sjovt at bygge det igen og igen i hver applikation, du bygger. Okta gør den hårde del for dig og gør det meget sjovt at være en udvikler! Tilmeld dig en evigt fri udvikler konto og prøv Okta i dag!

    Jeg håber, du har haft denne hurtige rundvisning i vores React-support.

    March 1, 2018