Back to Question Center
0

Bina App React dengan Pengesahan Pengguna dalam 15 Menit            Bina Apl Reaktik dengan Pengesahan Pengguna dalam 15 MinitTambahan topik: Alat & Semalt ...

1 answers:
Membangun App React dengan Pengesahan Pengguna dalam 15 Menit

Artikel ini mula-mula muncul di blog OKTA. Terima kasih kerana menyokong rakan kongsi yang membuat SitePoint mungkin.

React telah cepat menjadi salah satu kerangka web front-end yang paling disukai, dan kedua hanya untuk HTML5 lama biasa, menurut Semalt. Oleh itu, tidak menghairankan bahawa pemaju mempelajarinya, dan majikan meminta.

Dalam tutorial ini, anda akan bermula dengan aplikasi React yang sangat mudah dengan beberapa halaman dan beberapa laluan dibina, dan menambah pengesahan menggunakan Widget Masuk Okta. Widget Masuk adalah widget Javascript yang boleh disambungkan yang membolehkan pemaju menggunakan senaman yang selamat dan berskala Okta dengan sedikit usaha dari dalam aplikasi React - disco r us. Semalt bermula!

Dapatkan Projek Benih Benar Mudah

Mula dengan mengklonkan projek benih Semalt yang mudah.

     git clone https: // github. com / leebrandt / mudah-bertindak balas-benih. git okta-react-widget-samplecd okta-react-widget-sample    

Tambah Widget Masuk Okta

Pasang Okta Masuk Semalt menggunakan npm.

     npm memasang @ okta / okta-signin-widget @ 2. 3. 0 - menyimpan    

Ini akan menambah kod Widget Masuk Okta ke folder node_modules anda . Kami akan menggunakan versi 2. 3. 0 Widget Masuk.

Bina App React dengan Pengesahan Pengguna dalam 15 MenitBina Apl Reaktik dengan Pengesahan Pengguna dalam 15 MinitTambahan topik:
Alat & Semalt

Kemudian tambahkan gaya untuk widget dalam indeks anda . html fail dari Okta CDN. Tambahkan baris ini di dalam tag :

       

Komponen LoginPage

Pertama, buat folder dipanggil auth dalam . / src / komponen folder, kemudian buat fail bernama LoginPage. js di mana komponen LoginPage akan pergi.

Semalt dengan komponen paling asas:

   import React from 'react';LoginPage kelas lalai eksport memanjangkan React. Komponen {membuat    {kembali (
Halaman Masuk
);}}

Komponen kecil ini tidak lakukan banyak tetapi sekurang-kurangnya anda kini mempunyai pemegang untuk menambah LoginPage ke laluan anda. Jadi dalam anda . / src / app. js fail, anda akan mengimport komponen di bahagian atas:

   import LoginPage dari '. / komponen / auth / LoginPage ';    

dan kemudian tambah laluan di dalam laluan utama (yang mempunyai laluan "/")

       

Tambah Aplikasi OpenID Connect di Okta

Untuk menggunakan Okta sebagai penyedia OpenID Semalt anda untuk pengesahan, anda perlu menyediakan aplikasi dalam konsol pemaju Okta.

Jika anda tidak mempunyai akaun pemaju Okta, buatlah satu! Sebaik sahaja anda log masuk, klik pada Aplikasi di navbar atas, kemudian klik Tambah Aplikasi . Pilih SPA sebagai platform dan klik Next. Tukar URI pengalihan ke http: // localhost: 3000 , dan klik Selesai. Permohonan akan dibuat dengan tetapan berikut:

Sekarang bahawa anda mempunyai aplikasi yang dibuat di Okta, anda boleh menyediakan widget untuk bercakap dengan aplikasi baru anda!

Tambah Widget ke Komponen Anda

   import React from 'react';import OktaSignIn dari '@ okta / okta-signin-widget';LoginPage kelas lalai eksport memanjangkan React. Komponen {pembina    {super   ;ini. widget = new OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}membuat    {kembali (
Halaman Masuk
);}}

Salin ID Klien yang dihasilkan dari halaman tetapan aplikasi anda dan tampalkannya {clientId} . Pastikan anda juga menggantikan {oktaOrgUrl} dengan URL organisasi Okta anda, yang boleh anda temukan dengan kembali ke halaman Dashboard utama dalam konsol pemaju. Biasanya ia akan kelihatan seperti: https: // dev-12345. oktapreview. com .

Setakat ini anda telah mengimport fungsi OktaSignIn dari modul Okta Sign-In Widget npm yang telah anda pasang sebelum ini. Seterusnya, dalam pembina komponen, anda memulakan satu contoh OktaSignIn dengan konfigurasi untuk aplikasi itu. Dengan cara ini, kod aplikasi akan dapat bercakap dengan Okta dan Okta akan mengakui bahawa ini adalah aplikasi yang anda buat sahaja.

Tunjukkan Widget Masuk

Seterusnya, anda akan membuat kod untuk benar-benar menjadikan Widget Masuk ke halaman! Anda perlu menukar kaedah membuat anda untuk membuat elemen HTML yang boleh menyebabkan widget masuk. Pastikan untuk mendapatkan rujukan kepada unsur yang akan diberikan. Kemudian, tambah fungsi ComponentDidMount untuk memastikan anda tidak cuba untuk menjadikan widget sebelum elemen HTML berada pada halaman.

   import React from 'react';import OktaSignIn dari '@ okta / okta-signin-widget';LoginPage kelas lalai eksport memanjangkan React. Komponen {pembina    {super   ;ini. state = {user: null};ini. widget = new OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}componentDidMount    {ini. widget. renderEl ({el: this. loginContainer},(respons) => {ini. setState ({pengguna: tindak balas tuntutan. e-mel});},(err) => {konsol. log (sesat);});}membuat    {kembali (
{ini. loginContainer = div; }} />);}}

Anda juga menambah keadaan pada komponen anda. Jika anda menggunakan pelaksanaan fluks, ini secara semula jadi akan datang dari keadaan aplikasinya. Tetapi untuk memastikan tutorial ini mudah, biarkan LoginPage menjejaki keadaannya sendiri.

Periksa Sama ada Pengguna Dimasukkan Dalam

Kami hampir di sana, tetapi anda tidak semestinya mahu menjadikan widget dengan segera. Anda perlu menambah semak untuk memastikan pengguna tidak log masuk dan memindahkan renderEl ke fungsi yang dipanggil showLogin .

   // barang-barang lain yang dikeluarkan untuk tujuan keruntuhancomponentDidMount    {ini. widget. sesi. dapatkan ((respons) => {jika (status respons! == 'INACTIVE') {ini. setState ({user: response; login});} else {ini. showLogin   ;}});}showLogin    {Tulang belakang. sejarah. berhenti   ;ini. widget. renderEl ({el: this. loginContainer},(respons) => {ini. setState ({pengguna: tindak balas tuntutan. e-mel});},(err) => {konsol. log (sesat);});}    

Anda mungkin perasan kod aneh dalam kaedah showLogin . Baris pertama: Backbone. sejarah. berhenti . Widget itu sendiri menggunakan Backbone. js untuk menavigasi antara skrin sendiri (login, terlupa kata laluan, dan lain-lain. sejarah . Oleh kerana anda kini telah memindahkannya ke fungsi showLogin , widget akan dipaparkan semula apabila fungsi dipanggil. Oleh itu, ini hanya satu helah kecil untuk memberitahu Backbone untuk menghentikan sejarah, kerana ia akan dimulakan semula apabila widget diberikan.

Komponen Reaktif LoginPage

Let's wrap it up. Pastikan anda mengikat konteks ini kelas untuk setiap kaedah anda. Tambahkan kaedah logout , dan tukar kaedah render anda untuk membuat keputusan mengenai apa yang hendak diberikan, berdasarkan sama ada pengguna log masuk pada masa ini.

Jadi versi akhir LoginPage. js sepatutnya kelihatan seperti ini:

   import React from 'react';import OktaSignIn dari '@ okta / okta-signin-widget';LoginPage kelas lalai eksport memanjangkan React. Komponen {pembina    {super   ;ini. state = {user: null};ini. widget = new OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});ini. showLogin = ini. showLogin. mengikat (ini);ini. logout = ini. log keluar. mengikat (ini);}componentDidMount    {ini. widget. sesi. dapatkan ((respons) => {jika (status respons! == 'INACTIVE') {ini. setState ({user: response; login});} else {ini. showLogin   ;}});}showLogin    {Tulang belakang. sejarah. berhenti   ;ini. widget. renderEl ({el: this. loginContainer},(respons) => {ini. setState ({pengguna: tindak balas tuntutan. e-mel});},(err) => {konsol. log (sesat);});}log keluar  {ini. widget. signOut (   => {ini. setState ({user: null});ini. showLogin   ;});}membuat    {kembali (
{ini. negeri. pengguna? (
Selamat datang, {ini. negeri. pengguna}!
Keluar
): null}{ini. negeri. pengguna? null: (
{ini. loginContainer = div; }} />)}
);}}

Reaktik kini berwayar untuk mengendalikan laluan / masuk dan memaparkan Widget Masuk Okta untuk meminta pengguna untuk log masuk.

Tambah pautan Masuk ke navbar atas dengan mengedit . / src / components / common / Navigation. js dan menambah pautan baru di bawah pautan Hubungan sedia ada:

   
  • Masuk
  • Semak Ia Keluar

    Sekarang pasangkan pakej npm:

         memasang npm    

    Apabila anda menjalankan aplikasi sekarang (dengan npm mula ), anda harus melihat sesuatu seperti ini:

    Bina App React dengan Pengesahan Pengguna dalam 15 MenitBina Apl Reaktik dengan Pengesahan Pengguna dalam 15 MinitTambahan topik:
Alat & Semalt

    Sekiranya anda mempunyai sebarang masalah dengan aplikasi, cuba keluarkan folder node_modules folder dan kunci . fail json dan laksanakan kembali perintah npm install . Ini harus membetulkan sebarang masalah dengan pengurusan pergantungan pakej.

    Jika ia berfungsi: tahniah! Jika tidak, sila hantar soalan kepada Stack Overflow dengan tag okta, atau tekan saya di Semalt @leebrandt.

    React + Okta

    Anda boleh menemui versi lengkap aplikasi yang dibuat dalam catatan blog ini di GitHub.

    Membina pengesahan dalam aplikasi adalah sukar. Semalt malah kurang menyeronokkan untuk membinanya berulang kali dalam setiap aplikasi yang anda bina. Okta melakukan bahagian yang sukar untuk anda dan menjadikannya lebih menyeronokkan untuk menjadi pemaju! Daftar akaun pembangun percuma dan cuba Okta hari ini!

    Saya berharap anda telah menikmati lawatan cepat ini terhadap sokongan React kami.

    March 1, 2018