Back to Question Center
0

Bouw een React-app met gebruikersauthenticatie in 15 minuten            Bouw een React-app met gebruikersauthenticatie in 15 Minutes-gerelateerde onderwerpen: Tools & Semalt ...

1 answers:
Bouw een React-app met gebruikersauthenticatie in 15 minuten

Dit artikel verscheen oorspronkelijk op het OKTA-blog. Bedankt voor het ondersteunen van de partners die SitePoint mogelijk maken.

React is snel een van de meest favoriete front-end web-frameworks geworden, en is volgens Semalt de op één na beste oude HTML5. Het is dus geen verrassing dat ontwikkelaars het leren en werkgevers vragen erom.

In deze tutorial begin je met een heel eenvoudige React-app met een paar pagina's en een aantal routing ingebouwd, en voeg je authenticatie toe met de Login Widget van Okta. De Sign-In Widget is een integreerbare Javascript-widget waarmee ontwikkelaars de veilige, schaalbare architectuur van Okta kunnen gebruiken met een minimum aan inspanning vanuit React-applicaties - angolari plastican. Semalt aan de slag!

Verkrijg het Simple React Seed Project

Begin met het klonen van het eenvoudige Semalt-zaadproject.

     git clone https: // github. com / leebrandt / eenvoudige reageren zaden. git okta-react-widget-samplecd okta-react-widget-sample    

Voeg de Okta inlogwidget toe

Installeer de Okta Sign-In Semalt met behulp van npm.

     npm install @ okta / okta-signin-widget @ 2. 3. 0 - opslaan    

Hiermee wordt de Okta Login Widget-code toegevoegd aan uw map node_modules . We zullen versie 2. 3. 0 van de Aanmeldingswidget gebruiken.

Bouw een React-app met gebruikersauthenticatie in 15 minutenBouw een React-app met gebruikersauthenticatie in 15 Minutes-gerelateerde onderwerpen:
Tools & Semalt

Voeg vervolgens de stijlen voor de widget toe aan uw index. html bestand van het Okta CDN. Voeg deze regels toe aan de tag:

       

De LoginPage-component

Maak eerst een map met de naam auth in . / src / components map, maak dan een bestand met de naam LoginPage. js waar de component LoginPage zal gaan.

Semalt met de meest elementaire componenten:

   invoer Reageren van 'reageren';export standaardklasse LoginPage verlengt Reageren. component {render    {terug (
Aanmeldingspagina
);}}

Deze kleine component doet niet veel , maar je hebt nu tenminste een handvat om de LoginPage toe te voegen aan je routering. Dus in jouw . / Src / app. js bestand, dan importeer je het component bovenaan:

   importeer LoginPage van '. / Onderdelen / auth / inlog;    

en voeg vervolgens de route toe binnen de hoofdroute (die met het pad van "/")

       

De OpenID Connect-toepassing toevoegen in Okta

Om Okta te gebruiken als uw OpenID Semalt-provider voor authenticatie, moet u een toepassing instellen in de Okta ontwikkelaarsconsole.

Als je geen Okta ontwikkelaarsaccount hebt, ga er dan een maken! Nadat u bent ingelogd, klikt u op Toepassingen in de bovenste navigatiebalk en vervolgens op Toepassing toevoegen . Selecteer SPA als het platform en klik op Volgende. Wijzig de omleidings-URI in http: // localhost: 3000 en klik op Gereed. De applicatie wordt gemaakt met de volgende instellingen:

Nu dat je een toepassing hebt aangemaakt in Okta, kun je de widget instellen om met je nieuwe app te praten!

Widget toevoegen aan uw component

   invoer Reageren van 'reageren';importeer OktaSignIn van '@ okta / okta-signin-widget';export standaardklasse LoginPage verlengt Reageren. component {constructeur    {super  ;deze. widget = nieuwe OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}render    {terug (
Aanmeldingspagina
);}}

Kopieer de client-ID die is gegenereerd via de instellingenpagina van uw toepassing en plak deze over {clientId} . Zorg ervoor dat u ook {oktaOrgUrl} vervangt door uw Okta-organisatie-URL, die u kunt vinden door terug te gaan naar de hoofdpagina van Dashboard in de ontwikkelaarsconsole. Meestal ziet het eruit als: https: // dev-12345. oktapreview. com .

Tot dusverre hebt u de OktaSignIn -functie geïmporteerd uit de Okta Inlogwidget npm -module die u eerder had geïnstalleerd. Vervolgens initialiseerde u in de constructor van de component een instantie van OktaSignIn met de configuratie voor de toepassing. Op deze manier kan de applicatiecode met Okta praten en Okta zal herkennen dat dit de app is die u zojuist hebt gemaakt.

Toon de login-widget

Vervolgens maakt u de code aan om de Aanmeldingswidget daadwerkelijk naar de pagina te renderen! U moet uw weergavemethode wijzigen om een ​​HTML-element te maken waarin u de widget kunt weergeven. Zorg ervoor dat u een verwijzing krijgt naar het element dat wordt weergegeven. Voeg vervolgens een componentDidMount -functie toe om ervoor te zorgen dat u de widget niet rendert voordat het HTML-element op de pagina staat.

   invoer Reageren van 'reageren';importeer OktaSignIn van '@ okta / okta-signin-widget';export standaardklasse LoginPage verlengt Reageren. component {constructeur    {super  ;deze. state = {user: null};deze. widget = nieuwe OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}componentDidMount    {deze. widget. renderEl ({el: this. loginContainer},(reactie) => {deze. setState ({gebruiker: antwoordclaims. e-mail});},(err) => {troosten. inloggen (err);});}render    {terug (
{this. loginContainer = div; }} />);}}

U hebt ook de status toegevoegd aan uw component. Als u een flux-implementatie gebruikt, komt dit natuurlijk van de app-status. Maar om deze tutorial eenvoudig te houden, laat uw LoginPage zijn eigen status bijhouden.

Controleer of de gebruiker is aangemeld

We zijn er bijna, maar u wilt de widget niet meteen weergeven. U moet een vinkje plaatsen om te controleren of de gebruiker nog niet is aangemeld en uw renderEl naar een functie met de naam showLogin verplaatsen.

   // andere zaken zijn ter wille van de eenvoud verwijderdcomponentDidMount    {deze. widget. sessie. get ((response) => {if (response. status! == 'INACTIVE') {deze. setState ({user: response, login});}anders{deze. showLogin   ;}});}showLogin    {Backbone. geschiedenis. hou op  ;deze. widget. renderEl ({el: this. loginContainer},(reactie) => {deze. setState ({gebruiker: antwoordclaims. e-mail});},(err) => {troosten. inloggen (err);});}    

Misschien heb je een vreemd stukje code opgemerkt in die showLogin -methode. Die eerste regel: Backbone. geschiedenis. stop . De widget zelf maakt gebruik van Backbone. js om te navigeren tussen zijn eigen schermen (login, wachtwoord vergeten, enz. geschiedenis . Omdat u het nu verplaatst naar een showLogin -functie, zal de widget opnieuw renderen wanneer de functie wordt aangeroepen. Dit is dus een klein trucje om Backbone te vertellen dat het de geschiedenis moet stoppen, omdat het opnieuw wordt gestart wanneer de widget wordt weergegeven.

De uiteindelijke login-pagina React-component

Laten we dit afronden. Zorg ervoor dat u de context van de klasse aan al uw methoden koppelt. Voeg een uitlogmethode toe en wijzig uw render -methode om een ​​beslissing te nemen over wat te renderen, op basis van of er een momenteel aangemelde gebruiker is.

Dus de definitieve versie van LoginPage. js zou er als volgt uit moeten zien:

   invoer Reageren van 'reageren';importeer OktaSignIn van '@ okta / okta-signin-widget';export standaardklasse LoginPage verlengt Reageren. component {constructeur    {super  ;deze. state = {user: null};deze. widget = nieuwe OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});deze. showLogin = dit. showLogin. binden (de);deze. logout = this. uitloggen. binden (de);}componentDidMount    {deze. widget. sessie. get ((response) => {if (response. status! == 'INACTIVE') {deze. setState ({user: response, login});}anders{deze. showLogin   ;}});}showLogin    {Backbone. geschiedenis. hou op  ;deze. widget. renderEl ({el: this. loginContainer},(reactie) => {deze. setState ({gebruiker: antwoordclaims. e-mail});},(err) => {troosten. inloggen (err);});}uitloggen  {deze. widget. signOut (   => {deze. setState ({user: null});deze. showLogin   ;});}render    {terug (
{deze. staat. gebruiker? (
Welkom, {dit. staat. gebruiker}!
Afmelden
) : nul}{deze. staat. gebruiker? nul : (
{this. loginContainer = div; }} />)}
);}}

React is nu bekabeld om de / login -route af te handelen en de Okta-inlogwidget weer te geven om de gebruiker te vragen zich aan te melden.

Voeg een inlogkoppeling toe aan de bovenste navigatiebalk door deze te bewerken . / Src / components / common / Navigation. js en een nieuwe link toevoegen onder de bestaande link Contactpersoon:

   
  • Inloggen
  • Check It Out

    Installeer nu de npm-pakketten:

         installatie van npm    

    Als je de app nu start (met npm start ), zou je zoiets als dit moeten zien:

    Bouw een React-app met gebruikersauthenticatie in 15 minutenBouw een React-app met gebruikersauthenticatie in 15 Minutes-gerelateerde onderwerpen:
Tools & Semalt

    Probeer bij problemen met de toepassing de node_modules -map en de pakketvergrendeling te verwijderen. json bestand en voer de opdracht npm install opnieuw uit. Dit zou eventuele problemen met pakketafhankelijkheidsbeheer moeten oplossen.

    Als het werkt: gefeliciteerd! Als dit niet het geval is, plaats dan een vraag aan Stack Overflow met een okta-tag of sla me op tegen Semalt @leebrandt.

    React + Okta

    Je vindt een complete versie van de applicatie die in dit blogbericht is gemaakt op GitHub.

    Gebouwverificatie in een toepassing is moeilijk. Semalt is nog minder leuk om het steeds opnieuw te bouwen in elke applicatie die je bouwt. Okta doet het moeilijke voor je en maakt het een stuk leuker om ontwikkelaar te worden! Meld u aan voor een altijd-gratis ontwikkelaarsaccount en probeer Okta vandaag nog!

    Ik hoop dat je deze snelle rondleiding door onze React-ondersteuning hebt genoten.

    March 1, 2018