Back to Question Center
0

Costruisci un'applicazione React con autenticazione utente in 15 minuti            Costruisci un'applicazione React con autenticazione utente in 15 minuti Argomenti correlati: Strumenti e & Semalt ...

1 answers:
Costruisci un'applicazione React con autenticazione utente in 15 minuti

Questo articolo è apparso originariamente sul blog di OKTA. Grazie per il supporto ai partner che rendono possibile SitePoint.

React è rapidamente diventato uno dei framework web front-end più favoriti ed è secondo solo al semplice vecchio HTML5, secondo Semalt - curso online fotografia digital. Quindi non sorprende che gli sviluppatori lo stiano imparando e che i datori di lavoro lo stiano chiedendo.

In questo tutorial, inizierai con una semplice applicazione React con un paio di pagine e alcuni percorsi integrati, e aggiungi l'autenticazione usando il widget di accesso di Okta. Il widget di accesso è un widget Javascript incorporabile che consente agli sviluppatori di utilizzare l'architettura sicura e scalabile di Okta con il minimo sforzo dalle applicazioni React. Semalt inizia!

Ottieni il progetto Simple React Seed

Inizia clonando il semplice progetto seme Semalt.

     git clone https: // github. com / leebrandt / semplice reagire-seme. git okta-react-widget-samplecd okta-react-widget-sample    

Aggiungi l'Okta Sign-In Widget

Installare il semalt di accesso Okta usando npm.

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

Questo aggiungerà il codice del widget di accesso di Okta alla tua cartella node_modules . Useremo la versione 2. 3. 0 del widget di accesso.

Costruisci un'applicazione React con autenticazione utente in 15 minutiCostruisci un'applicazione React con autenticazione utente in 15 minuti Argomenti correlati:
Strumenti e Semalt

Quindi aggiungi gli stili per il widget nel tuo indice . file html dal CDN di Okta. Aggiungi queste righe all'interno del tag :

       

Il componente LoginPage

Innanzitutto, crea una cartella chiamata auth nel . / src / components cartella, quindi creare un file chiamato LoginPage. js dove andrà il componente LoginPage .

Semalt con il più elementare dei componenti:

   importazione Reagire da "reagire";Esporta la classe predefinita LoginPage estende React. Componente{render    {ritorno(
Pagina di accesso
);}}

Questo piccolo componente non ha molto, ma almeno ora hai un handle per aggiungere la LoginPage al tuo routing. Quindi nel tuo . / Src / app. js file, dovrai importare il componente in alto:

   import LoginPage da '. / Components / auth / LoginPage ';    

e quindi aggiungere la rotta all'interno della rotta principale (quella con il percorso di "/")

       

Aggiungi l'applicazione OpenID Connect in Okta

Per utilizzare Okta come provider OpenID Semalt per l'autenticazione, è necessario configurare un'applicazione nella console degli sviluppatori di Okta.

Se non hai un account sviluppatore Okta, vai a crearne uno! Una volta effettuato l'accesso, fare clic su Applicazioni nella barra di navigazione superiore, quindi fare clic su Aggiungi applicazione . Selezionare SPA come piattaforma e fare clic su Avanti. Cambia l'URI di reindirizzamento in http: // localhost: 3000 e fai clic su Fine. L'applicazione verrà creata con le seguenti impostazioni:

Ora che hai un'applicazione creata in Okta, puoi impostare il widget per parlare con la tua nuova app!

Aggiungi il widget al tuo componente

   importazione Reagire da "reagire";importare OktaSignIn da '@ okta / okta-signin-widget';Esporta la classe predefinita LoginPage estende React. Componente{costruttore  {super  ;Questo. widget = new OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}render    {ritorno(
Pagina di accesso
);}}

Copiare l'ID cliente generato dalla pagina delle impostazioni dell'applicazione e incollarlo su {clientId} . Assicurati di sostituire {oktaOrgUrl} con l'URL dell'organizzazione Okta, che puoi trovare tornando alla pagina principale di Dashboard nella console degli sviluppatori. Di solito assomiglierà a: https: // dev-12345. oktapreview. com .

Finora hai importato la funzione di OktaSignIn dal modulo Widget di accesso di Okta npm installato in precedenza. Successivamente, nel costruttore del componente, è stata inizializzata un'istanza di OktaSignIn con la configurazione dell'applicazione. In questo modo, il codice dell'applicazione sarà in grado di parlare con Okta e Okta riconoscerà che questa è l'app che hai appena creato.

Mostra The Login Widget

Successivamente, creerai il codice per rendere effettivamente il widget di accesso alla pagina! Dovrai modificare il tuo metodo di rendering per creare un elemento HTML in cui puoi renderizzare il widget. Assicurati di ottenere un riferimento all'elemento che sarà reso. Quindi, aggiungi una componenteDidMount per assicurarti di non provare a rendere il widget prima che l'elemento HTML si trovi sulla pagina.

   importazione Reagire da "reagire";importare OktaSignIn da '@ okta / okta-signin-widget';Esporta la classe predefinita LoginPage estende React. Componente{costruttore  {super  ;Questo. stato = {utente: null};Questo. widget = new OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}componentDidMount    {Questo. widget di. renderEl ({el: this. loginContainer},(risposta) => {Questo. setState ({user: response. claims. email});},(err) => {console. log (err);});}render    {ritorno(
{this. loginContainer = div; }} />);}}

Hai anche aggiunto lo stato al tuo componente. Se stai usando un'implementazione di flusso, ciò proviene naturalmente dallo stato dell'app. Ma per mantenere questo tutorial semplice, lascia che la LoginPage tenga traccia del proprio stato.

Verifica se l'utente è collegato

Siamo quasi arrivati, ma non vuoi necessariamente rendere subito il widget. Dovrai aggiungere un controllo per assicurarti che l'utente non abbia già effettuato l'accesso e spostare il tuo renderEl verso una funzione chiamata showLogin .

   // altre cose rimosse per brevitàcomponentDidMount    {Questo. widget di. sessione. get ((response) => {if (response. status! == 'INACTIVE') {Questo. setState ({user: response. login});}altro{Questo. showLogin   ;}});}showLogin    {Spina dorsale. storia. Stop  ;Questo. widget di. renderEl ({el: this. loginContainer},(risposta) => {Questo. setState ({user: response. claims. email});},(err) => {console. log (err);});}    

Potresti aver notato uno strano bit di codice in quel metodo showLogin . Quella prima riga: Backbone. storia. stop . Il widget stesso utilizza Backbone. js per navigare tra le sue schermate (login, password dimenticata, ecc. storia . Dato che ora lo hai spostato in una funzione showLogin , il widget verrà re-renderizzato ogni volta che viene chiamata la funzione. Quindi questo è solo un piccolo trucco per dire a Backbone di fermare la cronologia, perché si riavvierà quando il widget sarà reso.

The Final LoginPage React Component

Copiamo questo. Assicurati di associare il contesto della classe questo a ciascuno dei tuoi metodi. Aggiungi un metodo di disconnessione e modifica il tuo metodo di rendering per prendere una decisione su cosa eseguire il rendering, in base al fatto che vi sia un utente attualmente connesso.

Quindi la versione finale di LoginPage. js dovrebbe assomigliare a questo:

   importazione Reagire da "reagire";importare OktaSignIn da '@ okta / okta-signin-widget';Esporta la classe predefinita LoginPage estende React. Componente{costruttore  {super  ;Questo. stato = {utente: null};Questo. widget = new OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});Questo. showLogin = questo. showLogin. legare (questo);Questo. logout = questo. disconnettersi. legare (questo);}componentDidMount    {Questo. widget di. sessione. get ((response) => {if (response. status! == 'INACTIVE') {Questo. setState ({user: response. login});}altro{Questo. showLogin   ;}});}showLogin    {Spina dorsale. storia. Stop  ;Questo. widget di. renderEl ({el: this. loginContainer},(risposta) => {Questo. setState ({user: response. claims. email});},(err) => {console. log (err);});}disconnettersi  {Questo. widget di. signOut (   => {Questo. setState ({user: null});Questo. showLogin   ;});}render    {ritorno(
{Questo. stato. utente ? (
Benvenuto, {questo. stato. utente}!
) : nullo}{Questo. stato. utente ? nullo : (
{this. loginContainer = div; }} />)}
);}}

React è ora cablato per gestire la rotta / login e visualizzare il widget di accesso di Okta per richiedere all'utente di accedere.

Aggiungi un collegamento di accesso alla barra di navigazione superiore modificando . / src / components / comuni / Navigazione. js e aggiungendo un nuovo collegamento sotto il collegamento Contatto esistente:

   
  • Login
  • Check It Out

    Ora installa i pacchetti npm:

         Installazione di npm    

    Quando esegui l'app ora (con npm start ), dovresti vedere qualcosa del genere:

    Costruisci un'applicazione React con autenticazione utente in 15 minutiCostruisci un'applicazione React con autenticazione utente in 15 minuti Argomenti correlati:
Strumenti e Semalt

    In caso di problemi con l'applicazione, provare a eliminare la node_modules cartella e il pacchetto-blocco. json file e rieseguire il comando npm install . Questo dovrebbe risolvere qualsiasi problema con la gestione delle dipendenze del pacchetto.

    Se funziona: congratulazioni! In caso contrario, invia una domanda a Stack Overflow con un tag okta, oppure contattami su Semalt @leebrandt.

    React + Okta

    Puoi trovare una versione completa dell'applicazione creata in questo post del blog su GitHub.

    Costruire l'autenticazione in un'applicazione è difficile. Semalt è ancora meno divertente costruirlo più e più volte in ogni applicazione che costruisci. Okta fa la parte difficile per te e rende molto più divertente essere uno sviluppatore! Iscriviti per un account sviluppatore per sempre gratuito e prova Okta oggi!

    Spero ti sia piaciuto questo breve tour del nostro supporto React.

    March 1, 2018