Artikel ini pada asalnya diterbitkan di blog pemaju Okta. Terima kasih kerana menyokong rakan kongsi yang membuat SitePoint mungkin.
React adalah perpustakaan yang cepat dan ringan, yang telah membawa kepada penggunaan cepat di seluruh ekosistem spa (satu halaman). Preact adalah alternatif yang lebih ringan dan lebih cepat untuk bertindak balas, beratnya pada 3KB yang kecil! Untuk aplikasi yang kurang kompleks, ia boleh menjadi pilihan yang hebat.Dalam tutorial ini, anda akan membina aplikasi preact asas dengan beberapa halaman dan pengesahan pengguna menggunakan widget log masuk Okta.
Takeaways Key
Sebaik sahaja anda memasang CLI, jalankan arahan untuk membuat aplikasi preact asas:
npm install -g preact-cli
Perintah ini akan berkumpul bersama selama beberapa minit perancah aplikasi preact asas dan memasang semua kebergantungan. Sebaik sahaja ia selesai, anda harus melihat sekumpulan maklumat mengenai baris arahan yang memberitahu anda tentang apa yang boleh anda lakukan seterusnya.
preact create okta-preact-example
Tukar ke dalam direktori aplikasi.
kemudian mulakan aplikasi, hanya untuk memastikan semuanya berfungsi seperti yang diharapkan.
cd okta-preact-example
anda harus melihat larian yang cepat dan skrin akan jelas dan menunjukkan kepada anda bahawa aplikasi sedang berjalan di http: // localhost: 8080. Apabila anda membuka URL itu di penyemak imbas anda, anda harus melihat halaman seperti ini:
npm start
Beberapa perkara yang perlu diperhatikan mengenai preactcli
Walaupun preactcli mengatakan permohonan itu berjalan di http://0.0.0.0:8080, gunakan http: // localhost: 8080. Ia adalah perkara yang sama dan apabila anda menyediakan aplikasi anda di papan pemuka Okta, anda akan menetapkan http: // localhost: 8080 sebagai URL asas anda dan URL panggil balik, jadi ini hanya memastikan bahawa anda boleh menghubungi API Okta.
Buat aplikasi Okta anda
Sebaik sahaja anda telah membuat akaun, pergi ke papan pemuka admin dan klik pada "Aplikasi" dalam menu halaman. Kemudian klik butang "Tambah Aplikasi" Hijau, kemudian butang "Buat Aplikasi Baru" hijau, supaya anda melihat tetingkap modal seperti:
Pilih "Spa" dari butang Platform. Klik butang "Seterusnya" untuk membuat aplikasi anda.
Ini akan membawa anda ke skrin ke halaman "Tetapan Aplikasi" dari Wizard Aplikasi Buat. Masukkan "OktapreaceCtExample" dalam medan nama aplikasi dan tambahkan http: // localhost: 8080 sebagai uri asas anda dan sebagai uri redirect login. Apabila anda selesai, borang anda sepatutnya kelihatan seperti ini:
Pasang log masuk okta dalam widget
anda juga perlu memasang preact-router dengan:
npm install -g preact-cli
Tambahkan komponen pesanan lebih tinggi Auth
preact create okta-preact-example
tambahkan fail yang dipanggil auth.js dalam folder /src /lib dan tambahkan kod berikut:
Dalam baris pertama kod, anda boleh memberitahu sesuatu yang berbeza. Modul H dalam Preact adalah apa yang menjadikan JSX menjadi elemen DOM. Biasanya, React akan menggunakan Perpustakaan React untuk menjana reaksi. Penyataan Createelement untuk membuat elemen DOM dari JSX. Preact menggunakan Perpustakaan H untuk membuat sesuatu seperti H ('Div', {Class: 'Something', 'Content') untuk melakukan itu.
cd okta-preact-example
Seterusnya, anda mengimport laluan dari preact-router tepat di bawah import H. Inilah yang digunakan oleh Preact untuk melakukan pengalihan dalam fungsi log masuk. Perhatikan bahawa kelas auth hanyalah fungsi biasa dan tidak memanjangkan komponen. Dalam pembina, fungsi dalaman terikat dengan konteks ini dari kelas auth.
kemudian masukkan URL Organisasi OKTA dan ID Pelanggan anda ke Konfigurasi Widget Masuk Okta. URL organisasi anda akan menjadi URL yang anda gunakan semasa anda log masuk ke akaun Okta anda (mis. "Tab untuk permohonan anda (jelas, anda tidak akan kabur):
Anda juga ingin menukar harta redirectic ke http: // localhost: 8080 kerana sudah preact menggunakan port 8080 dan bukannya 3000 untuk aplikasi reaksi biasa.
Fungsi log masuk hanya mengarahkan pengguna ke halaman log masuk, sementara fungsi logout membersihkan token yang disimpan dalam pengurus token widget, panggilan masuk pada widget, dan mengalihkan pengguna ke akar aplikasi.
Akhirnya, seorang singleton kelas auth dicipta untuk dikongsi oleh semua komponen, dan diluluskan sebagai prop yang dipanggil Auth kepada mana -mana komponen yang anda bungkus dengan withAuth.
Buat fail dalam folder /src /lib anda yang dipanggil oktasigninwidget.js. Masukkan kod untuk komponen ini:
npm install -g preact-cli
di sini, kaedah ComponentDidMount menjadikan widget log masuk Okta ke Div dalam kaedah render anda dan fungsi ComponentWillUnmount menghilangkan widget.
Dalam kaedah render, terdapat beberapa kod yang pelik. Ini membolehkan anda menetapkan rujukan kepada elemen semasa ke dalam pembolehubah yang dipanggil widgetContainer dan kemudian menggunakannya dalam ComponentDidMount sebagai ini.widgetContainer. Kemas, ya? Terima kasih kepada Matt Raible kerana menunjukkan kepada saya tipu muslihat!
Router React mempunyai komponen redirect di dalamnya, tetapi penghala yang betul tidak, jadi anda memerlukannya. Nasib baik, mudah untuk mencipta sendiri. Dalam folder anda /src /lib anda buat fail yang dipanggil redirect.js dan tambahkan kod berikut:
preact create okta-preact-example
Ini hanyalah komponen yang akan diarahkan semula berdasarkan URL yang diserahkan kepadanya. Dalam kes ini, penggunaan akan diarahkan dengan menggunakan mekanisme tetingkap., Kebanyakannya kerana anda ingin menyegarkan semula halaman. Anda juga boleh menggunakan laluan (this.props.to.pathname) dan biarkan penghala Preact mengalihkan pengguna.
Seterusnya, buat folder log masuk dalam SRC/Laluan. Dalam folder itu buat fail index.js dan fail gaya.css. Ini hanya berikut dengan cara CLI yang sudah preact mencipta komponen.
Dalam fail index.js, buat komponen log masuk, dibungkus dalam komponen WithAuth. Pertama, dengan mengimport modul yang diperlukan:
npm install -g preact-cli
Mulakan komponen dengan membungkus komponen pesanan lebih tinggi yang anda buat sebelum ini, dan tetapkan keadaan permulaan. Di sini, anda akan mempunyai redirecttoreferrer yang ditetapkan kepada palsu secara lalai.
preact create okta-preact-example
dalam fungsi kitaran hayat ComponentWillMount, mengikat fungsi onsuccess dan onerror dan membuatnya dalam komponen anda.
cd okta-preact-example
Anda akan melihat komponen anda melewati pengendalian pengesahan kembali ke komponen pesanan yang lebih tinggi. Ini adalah contoh utama manfaat komponen dan komposisi pesanan lebih tinggi dalam JavaScript.
Akhirnya, buat fungsi render yang akan membuat keputusan mengenai menunjukkan widget log masuk atau, jika pengguna sudah log masuk, mengalihkannya ke halaman rumah. Anda juga boleh mengalihkan pengguna ke halaman yang mereka akan pergi ketika mereka diarahkan ke halaman log masuk, tetapi mari langkau itu buat masa ini.
npm start
Anda akan melihat di sini bahawa Preact adalah sedikit berbeza kerana ia memberi anda mengendalikan kepada prop dan menyatakan sebagai parameter kepada fungsi render. Kod ini hanya menggunakan pemusnahan parameter tersebut untuk menggunakan lokasi, auth dan redirecttoreferrer mudah tanpa mempunyai satu tan ini.
jadi fail final /src/routes/login/index.js akan kelihatan seperti:
npm install @okta/okta-signin-widget --save
npm install preact-router --save
Kemas kini komponen pengepala
import {h} from 'preact'; import { route } from 'preact-router'; import OktaSignIn from '@okta/okta-signin-widget/dist/js/okta-sign-in.min.js'; import '@okta/okta-signin-widget/dist/css/okta-sign-in.min.css'; import '@okta/okta-signin-widget/dist/css/okta-theme.css'; class Auth { constructor() { this.login = this.login.bind(this); this.logout = this.logout.bind(this); this.isAuthenticated = this.isAuthenticated.bind(this); this.handleAuthentication = this.handleAuthentication.bind(this); this.widget = new OktaSignIn({ baseUrl: 'https://{yourOktaDomain}.com/', clientId: '{clientId}', redirectUri: 'http://localhost:8080', authParams: { responseType: ['id_token', 'token'], scopes: ['openid', 'email', 'profile'] } }); } isAuthenticated() { // Checks if there is a current accessToken in the TokenManger. return !!this.widget.tokenManager.get('accessToken'); } getCurrentUser(){ return this.widget.tokenManager.get('idToken'); } login() { // Redirect to the login page route('/login/'); } async logout() { this.widget.tokenManager.clear(); await this.widget.signOut(); location = '/'; } handleAuthentication(tokens) { for (let token of tokens) { if (token.idToken) { this.widget.tokenManager.add('idToken', token); } else if (token.accessToken) { this.widget.tokenManager.add('accessToken', token); } } } } // create a singleton const auth = new Auth(); export const withAuth = WrappedComponent => props => <WrappedComponent auth={auth} {...props} />;
Tukar penghalaan anda
import { h, Component } from 'preact'; export default class OktaSignInWidget extends Component { componentDidMount() { this.widget = this.props.widget; this.widget.renderEl({ el: this.widgetContainer }, this.props.onSuccess, this.props.onError); } componentWillUnmount() { this.widget.remove(); } render() { return <div ref={(div) => { this.widgetContainer = div; }} /> } };
Anda kini boleh menyimpan kerja anda dan jalankan NPM Mula dalam folder root dan lihat aplikasi Preact yang berfungsi sepenuhnya dengan Pengesahan Pengguna melalui OKTA!
Terdapat banyak persamaan antara Preact dan React, tetapi terdapat beberapa perbezaan utama. Preact dimaksudkan untuk aplikasi di mana menjaga saiz muat turun kecil adalah kritikal. Terdapat beberapa kemudahan yang bagus dalam penghala yang sudah berjaya, tetapi ada beberapa perkara yang hilang (seperti dengan router). Terdapat juga beberapa kemudahan yang kemas, seperti mempunyai alat peraga dan negeri yang diserahkan kepada fungsi render. Semua dalam semua, saya fikir sudah preact adalah kemas, tetapi saya dapat melihat benar-benar memerlukan reaksi penuh untuk aplikasi kompleks.
Anda boleh mengetahui lebih lanjut mengenai Preact dari laman web mereka dan router preact dari repositori GitHub.
anda juga boleh mendapatkan kod lengkap untuk artikel ini dari pemaju Okta Github Repository.
Seperti biasa, jika anda mempunyai sebarang pertanyaan, komen atau kebimbangan mengenai artikel, kod, preact atau Okta, jangan ragu untuk menghubungi saya melalui e -mel, atau memukul saya dalam komen atau melalui Twitter @leebrandt.
Preact menggunakan preact-router untuk penghalaan. Ia adalah penghala yang mudah dan kecil yang menggunakan API Sejarah Pelayar. Untuk menggunakannya, anda perlu memasangnya melalui NPM dan mengimportnya ke dalam projek anda. Kemudian, anda boleh menentukan laluan anda menggunakan komponen
Atas ialah kandungan terperinci Bina aplikasi yang sudah berjaya dengan pengesahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!