Back to Question Center
0

Bygg en React App med brukerautentisering på 15 minutter            Bygg en React App med brukerautentisering på 15 minutterRelaterte emner: Verktøy & Semalt ...

1 answers:
Bygg en React App med brukerautentisering på 15 minutter

Denne artikkelen opprinnelig ble vist på OKTA-bloggen. Takk for at du støttet partnerne som gjør SitePoint mulig.

React har raskt blitt en av de mest favoriserte front-end web rammer, og er andre bare for ren gammel HTML5, ifølge Semalt. Så det er ingen overraskelse at utviklere lærer det, og arbeidsgivere ber om det. (1. 3)

I denne opplæringen begynner du med en veldig enkel React-app med et par sider og noen ruting innebygd, og legg til autentisering ved hjelp av Okta's Sign-In Widget - asgard usi number. Inloggings widgeten er en innebygd Javascript-widget som lar utviklere bruke Okta's sikre, skalerbar arkitektur med et minimum av innsats fra React-applikasjoner. Semalt komme i gang! (1. 3)

Få det enkle reaksfrøprosjektet

Start med å klone det enkle Semalt-frøprosjektet. (1. 3)

     git klone https: // github. com / leebrandt / enkel reagere-frø. git okta-reagere-widget-samplecd okta-reagere-widget-sample    

Legg til Okta Sign-In Widget

Installer Okta Sign-In Semalt ved hjelp av npm. (1. 3)

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

Dette vil legge til Okta Sign-In Widget-koden til mappen node_modules . Vi bruker versjon 2. 3. 0 av påloggings widgeten. (1. 3)

Bygg en React App med brukerautentisering på 15 minutterBygg en React App med brukerautentisering på 15 minutterRelaterte emner:
Verktøy & Semalt

Legg deretter til stilene for widgeten i din indeks. html fil fra Okta CDN. Legg disse linjene inne i tag:

       

LoginPage-komponenten

Opprett først en mappe kalt auth i . / src / components mappen, og opprett en fil som kalles LoginPage. js der komponenten LoginPage vil gå. (1. 3)

Semalt med de mest grunnleggende komponenter:

   Import Reakt fra 'reagere';eksporter standard klasse LoginPage strekker seg React. Komponent{render    {komme tilbake(
Innloggingsside
);}}

Denne lille komponenten gjør ikke mye, men i det minste har du nå et håndtak for å legge til LoginPage til rutingen din. Så i din . / Src / app. js fil, vil du importere komponenten øverst:

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

og legg deretter til ruten inne i hovedruten (den ene med stien til "/")

       

Legg til OpenID Connect-applikasjonen i Okta

For å kunne bruke Okta som OpenID Semalt leverandør for godkjenning, må du sette opp et program i Okta-utviklerkonsollen. (1. 3)

Hvis du ikke har en Okta-utvikler konto, må du opprette en! Når du er logget inn, klikk på Programmer i øverste navbar, og klikk deretter Legg til applikasjon . Velg SPA som plattform og klikk Neste. Endre omadresser-URI til http: // localhost: 3000 , og klikk Ferdig. Programmet vil bli opprettet med følgende innstillinger:

Nå som du har et program opprettet i Okta, kan du sette opp widgeten for å snakke med den nye appen din! (1. 3)

Legg til widgeten på din komponent

   Import Reakt fra 'reagere';importer OktaSignIn fra '@ okta / okta-signin-widget';eksporter standard klasse LoginPage strekker seg React. Komponent{konstruktør    {super  ;dette. widget = ny OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}render    {komme tilbake(
Innloggingsside
);}}

Kopier klient-IDen generert fra programmets innstillingsside og lim den over {clientId} . Forsikre deg om at du også erstatter {oktaOrgUrl} med din Okta organisasjonsadresse, som du finner ved å gå tilbake til hovedpanelet i utviklerkonsollen. Vanligvis vil det se ut som: https: // dev-12345. oktapreview. com . (1. 3)

Så langt har du importert funksjonen OktaSignIn fra Okta Sign-In Widget npm -modulen du installerte tidligere. Deretter initierte du i konstruktøren til komponenten en forekomst av OktaSignIn med konfigurasjonen for applikasjonen. På denne måten vil programkoden kunne snakke med Okta, og Okta vil gjenkjenne at dette er appen du nettopp har opprettet. (1. 3)

Vis logg-widgeten

Neste, vil du opprette koden for å faktisk gjøre påloggings widgeten til siden! Du må endre gjengivelsesmetoden for å lage et HTML-element som du kan gjøre widgeten til. Sørg for å få en referanse til elementet som skal gjengis. Deretter legger du til en componentDidMount -funksjon for å sikre at du ikke prøver å gjengi widgeten før HTML-elementet er på siden. (1. 3)

   Import Reakt fra 'reagere';importer OktaSignIn fra '@ okta / okta-signin-widget';eksporter standard klasse LoginPage strekker seg React. Komponent{konstruktør    {super  ;dette. state = {bruker: null};dette. widget = ny OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}componentDidMount    {dette. widget. renderEl ({el: this. loginContainer},(svar) => {dette. setState ({user: response. claims. email});}(err) => {konsollen. log (err);});}render    {komme tilbake(
{dette. loginContainer = div; }} />);}}

Du har også lagt til tilstanden til komponenten din. Hvis du bruker en fluximplementasjon, vil dette naturlig komme fra app-staten. Men for å holde denne opplæringen enkel, la din LoginPage holde oversikt over sin egen tilstand. (1. 3)

Sjekk om brukeren er logget inn

Vi er nesten der, men du ønsker ikke nødvendigvis å gjengi widgeten med en gang. Du må legge til en sjekk for å forsikre deg om at brukeren ikke allerede er logget inn, og flytt din renderEl til en funksjon kalt showLogin . (1. 3)

   // andre ting fjernet for korthetens skyldcomponentDidMount    {dette. widget. økt. få ((svar) => {hvis (svarstatus! == 'INAKTIVT') {dette. setState ({user: response. login});}ellers{dette. showLogin   ;}});}showLogin    {Ryggrad. historie. Stoppe  ;dette. widget. renderEl ({el: this. loginContainer},(svar) => {dette. setState ({user: response. claims. email});}(err) => {konsollen. log (err);});}    

Du har kanskje lagt merke til en merkelig bit kode i den showLogin metoden. Den første linjen: Ryggrad. historie. Stopp . Widgeten bruker seg selv Ryggrad. js å navigere mellom egne skjermbilder (logg inn, glemt passord osv. historie . Siden du nå har flyttet det til en showLogin -funksjon, vil widgeten gjenta når funksjonen blir kalt. Så dette er bare et lite triks for å fortelle Ryggraden for å stoppe historien, fordi den skal starte på nytt når widgeten gjengis. (1. 3)

Endelig LoginPage React Component

La oss pakke opp dette. Pass på at du binder klassens denne konteksten til hver av metodene dine. Legg til en logout metode, og endre render metoden for å ta en beslutning om hva du skal gjengi, basert på om det er en innlogget bruker. (1. 3)

Så den endelige versjonen av LoginPage. js skal se slik ut:

   Import Reakt fra 'reagere';importer OktaSignIn fra '@ okta / okta-signin-widget';eksporter standard klasse LoginPage strekker seg React. Komponent{konstruktør    {super  ;dette. state = {bruker: null};dette. widget = ny OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});dette. showLogin = dette. showLogin. binde (this);dette. logout = dette. Logg ut. binde (this);}componentDidMount    {dette. widget. økt. få ((svar) => {hvis (svarstatus! == 'INAKTIVT') {dette. setState ({user: response. login});}ellers{dette. showLogin   ;}});}showLogin    {Ryggrad. historie. Stoppe  ;dette. widget. renderEl ({el: this. loginContainer},(svar) => {dette. setState ({user: response. claims. email});}(err) => {konsollen. log (err);});}Logg ut  {dette. widget. signOut (   => {dette. setState ({user: null});dette. showLogin   ;});}render    {komme tilbake(
{dette. stat. bruker? (
Velkommen, {dette. stat. bruker}!
Logg
) : null}{dette. stat. bruker? null : (
{dette. loginContainer = div; }} />)}
);}}

React er nå koblet opp til å håndtere / login ruten og vise Okta Sign-In Widget for å spørre brukeren om å logge inn.

Legg til en innloggingskobling til toppen navbar ved å redigere . / src / komponenter / felles / Navigasjon. js og legge til en ny lenke under den eksisterende Kontakt-lenken:

   
  • Logg inn
  • Sjekk ut det

    Nå installer npm-pakkene:

         npm installasjon    

    Når du kjører appen nå (med npm start ), bør du se noe slikt:

    Bygg en React App med brukerautentisering på 15 minutterBygg en React App med brukerautentisering på 15 minutterRelaterte emner:
Verktøy & Semalt

    Hvis du har problemer med programmet, prøv å slette node_modules -mappen og pakken . json fil og kjør kommandoen npm installasjon igjen. Dette bør løse eventuelle problemer med pakkeavhengighetsadministrasjon. (1. 3)

    Hvis det virker: gratulerer! Hvis det ikke gjør det, vennligst send et spørsmål til Stack Overflow med en okta tag, eller slå meg på Semalt @leebrandt. (1. 3)

    React + Okta

    Du finner en fullført versjon av søknaden som er opprettet i dette blogginnlegget på GitHub. (1. 3)

    Byggeautentisering i en applikasjon er vanskelig. Semalt enda mindre morsomt å bygge det igjen og igjen i hver applikasjon du bygger. Okta gjør den vanskelige delen for deg og gjør det mye morsommere å være utvikler! Registrer deg for en evig-gratis utvikler konto og prøv Okta i dag! (1. 3)

    Jeg håper du har hatt denne raske rundturen i React-støtten. (1. 3)

    March 1, 2018