Rumah > hujung hadapan web > tutorial js > Mengesahkan aplikasi Node.js dengan Pasport

Mengesahkan aplikasi Node.js dengan Pasport

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-03-13 10:54:10
asal
920 orang telah melayarinya

Dalam tutorial ini, kami akan membangunkan aplikasi Node.js dari awal dan menggunakan pasport middleware pengesahan yang popular untuk menjaga kebimbangan pengesahan kami.

Dokumentasi pasport menggambarkannya sebagai "middleware pengesahan yang mudah dan tidak mengganggu untuk nod" dan betul demikian.

Dengan menyediakan dirinya sebagai middleware, pasport melakukan pekerjaan yang sangat baik untuk memisahkan kebimbangan lain aplikasi web dari keperluan pengesahannya. Ia membolehkan pasport mudah dikonfigurasikan ke dalam mana-mana aplikasi web berasaskan ekspres, sama seperti kita mengkonfigurasi middleware Express lain seperti pembalakan, body-parsing, cookie-parsing, dan pengendalian sesi.

Tutorial ini menganggap pemahaman asas mengenai node.js dan rangka kerja ekspres untuk memastikan fokus pada pengesahan, walaupun kami membuat aplikasi Express sampel dari awal. Kami akan mengamankan aplikasinya dengan menambahkan laluan kepadanya dan mengesahkan beberapa laluan tersebut.

Strategi pengesahan

Pasport menyediakan kami dengan 500 mekanisme pengesahan untuk dipilih. Anda boleh mengesahkan contoh pangkalan data tempatan atau jarak jauh atau menggunakan log masuk tunggal menggunakan penyedia OAuth untuk Facebook, Twitter, Google, dan lain-lain untuk mengesahkan dengan akaun media sosial anda.

Tetapi jangan risau: Anda tidak perlu memasukkan sebarang strategi yang tidak diperlukan oleh aplikasi anda. Semua strategi ini bebas antara satu sama lain dan dibungkus sebagai modul nod yang berasingan yang tidak disertakan secara lalai apabila anda memasang middleware pasport: NPM Install Express - -Save

Anda juga boleh memasang penjanaan ekspres dengan coretan kod berikut:

serializeUser function is used to persist a user's data into the session after successful authentication, while a passport , and create a file init.js with the following code snippets:

 var user = memerlukan ('../ model/pengguna');<br><br> modul.exports = fungsi (pasport) {<br><br> // Pasport perlu dapat bersiri dan deserialize pengguna untuk menyokong sesi log masuk yang berterusan<br> pasport.serializeUser (fungsi (pengguna, selesai) {<br> Console.log ('Pengguna Serializing:', Pengguna);<br> selesai (null, user._id);<br> });<br><br> pasport.deserializeUser (fungsi (id, selesai) {<br> User.findById (id, fungsi (err, pengguna) {<br> Console.log ('Pengguna Deserializing:', Pengguna);<br> dilakukan (err, pengguna);<br> });<br> });<br> }<br>
Salin selepas log masuk

Menggunakan strategi pasport

We will now define Passport's strategies for handling login and signup . Each of them would be an instance of the Local Authentication Strategy of Passport and would be created using the npm i connect-flash .

Strategi Log masuk

Create a login.js file in the bcryptjs by executing the command passport.use() function.

 var bcrypt = memerlukan ('bcrypt-nodejs');<br><br> modul.exports = fungsi (pasport) {<br><br> pasport.use ('login', ...)<br> );<br><br> var isvalidpassword = function (pengguna, kata laluan) {<br> kembali bcrypt.comPareSync (kata laluan, user.password);<br> }<br> }<br>
Salin selepas log masuk

Jika anda berasa tidak selesa dengan coretan kod dan lebih suka melihat kod lengkap dalam tindakan, jangan ragu untuk melayari kod di sini.

Strategi Pendaftaran

Now, we create a signup.js file in the views folder of our application, we should see .jade files. Jade adalah enjin templating, terutamanya digunakan untuk templating sisi pelayan di Node.js. Ini cara yang kuat untuk menulis markup dan memberikan halaman secara dinamik menggunakan Express. Ia memberikan lebih banyak fleksibiliti berbanding menggunakan fail HTML statik. Untuk mengetahui lebih lanjut mengenai Jade dan bagaimana ia berfungsi, anda boleh menyemak dokumentasi.

Seterusnya, kami membuat empat pandangan berikut untuk permohonan kami:

  1. layout.jade contains the basic layout and styling information.
  2. index.jade contains the login page providing the login form and giving the option to create a new account.
  3. register.jade contains the registration form.
  4. home.jade says hello and shows the logged-in user's details.
 DOCTYPE HTML<br> html<br> kepala<br> tajuk = tajuk<br> pautan (rel = 'stylesheet', href = '/stylesheets/style.css')<br> pautan (rel = 'stylesheet', href = 'http: //maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css')<br> badan<br> Blok kandungan<br>
Salin selepas log masuk

In the index.jade file, we will include the following code snippets:

 memanjangkan susun atur<br><br> Blok kandungan<br> div.container<br> div.row<br> div.col-sm-6.col-md-4.col-md-offset-4<br> h1.text-center.login-title Log masuk ke aplikasi Pasport kami<br> div.account-wall<br> img (class = 'profile-img', src = 'https: //lh5.googleusercontent.com/-b0-k99fzlye/aaaaaaaaaai/aaaaaaaaaaaaaaaaaaaa4byxi/photo.jpg? sz = 120')<br> bentuk (kelas = 'bentuk-signin', tindakan = '/login', kaedah = 'pos')<br> Input (Type = 'Text', Name = 'Nama Pengguna' class = 'Form-control', Placeholder = 'E-mel', diperlukan, Autofocus)<br> Input (jenis = 'kata laluan', name = 'password' class = 'form-control', placeholder = 'kata laluan', diperlukan)<br> butang (kelas = 'btn btn-lg btn-primary btn-block', type = 'hantar') Log masuk<br> span.clearfix<br> a (href = '/signup', class = 'account baru-pusat teks') Buat akaun<br> #message<br> jika mesej<br> h1.text-center.error-message #{message}<br>
Salin selepas log masuk

In the register.jade file, we'll include the following code snippets:

 memanjangkan susun atur<br><br> Blok kandungan<br> div.container<br> div.row<br> div.col-sm-6.col-md-4.col-md-offset-4<br> H1.Text-Center.Login-Title RETALLATION<br> div.signup-wall<br> bentuk (kelas = 'bentuk-signin', tindakan = '/pendaftaran', kaedah = 'pos')<br> Input (Type = 'Text', Name = 'Nama Pengguna', Class = 'Form-control', Placeholder = 'Nama Pengguna', Diperlukan, Autofocus)<br> Input (Type = 'Kata Laluan', Name = 'Kata Laluan', Kelas = 'Nomargin-Control Nomargin', Placeholder = 'Kata Laluan', Diperlukan)<br> Input (Type = 'E-mel', Name = 'Email', Class = 'Form-Control', Placeholder = 'E-mel', diperlukan)<br> Input (Type = 'Text', Name = 'FirstName', Class = 'Form-control', Placeholder = 'Nama Pertama', Diperlukan)<br> Input (Type = 'Text', Name = 'LastName', Class = 'Form-control', Placeholder = 'Nama Akhir', Diperlukan)<br> butang (kelas = 'btn btn-lg btn-primary btn-block', type = 'hantar') Daftar<br> span.clearfix<br> #message<br> jika mesej<br> h1.text-center.error-message #{message}<br>
Salin selepas log masuk

In the home.jade file, we'll include the following code snippets:

 memanjangkan susun atur<br><br> Blok kandungan<br> div.container<br> div.row<br> div.col-sm-6.col-md-4.col-md-offset-4<br> #user<br> h1.text-center.login-title Selamat Datang #{user.firstName}. Periksa maklumat anda di bawah:<br> div.signup-wall<br> UL.User-Details<br> Nama Pengguna Li ---> #{user.username}<br> e-mel li ---> #{user.email}<br> Li Nama Pertama ---> #{user.firstName}<br> Li Nama Akhir ---> #{user.lastname}<br> A (href = '/signout', class = 'c-center baru-akhbar') Log masuk<br>
Salin selepas log masuk

Sekarang halaman pendaftaran kelihatan seperti ini:

Mengesahkan aplikasi Node.js dengan Pasport

Halaman log masuk kelihatan seperti ini:

Mengesahkan aplikasi Node.js dengan Pasport

Dan halaman perincian kelihatan seperti ini:

Mengesahkan aplikasi Node.js dengan Pasport

Melaksanakan fungsi logout

Pasport, sebagai middleware, memungkinkan untuk menambah sifat dan kaedah tertentu atas objek permintaan dan tindak balas. Passport has a very handy request.logout() method which invalidates the user session apart from other properties.

Oleh itu, mudah untuk menentukan laluan logout:

 / * Mengendalikan logout */<br> router.get ('/signout', fungsi (req, res, seterusnya) {<br> req.logout (fungsi (err) {<br> jika (err) {return next (err); }<br> res.redirect ('/')<br> })<br> });<br>
Salin selepas log masuk

Melindungi laluan

Pasport juga memberikan keupayaan untuk melindungi akses ke laluan yang dianggap tidak sesuai untuk pengguna tanpa nama. Ini bermakna jika pengguna cuba mengakses http: // localhost: 3000/rumah tanpa mengesahkan dalam permohonan, mereka akan diarahkan ke halaman rumah.

 / * Mendapatkan halaman rumah */<br> router.get ('/home', isauthenticated, function (req, res) {<br> res.render ('home', {user: req.user});<br> });<br><br> // Seperti mana -mana middleware, ia adalah sangat penting untuk dipanggil seterusnya ()<br> // Sekiranya pengguna disahkan<br> var isAuthenticated = function (req, res, next) {<br> jika (req.isAuthenticated ())<br> kembali seterusnya ();<br> res.Redirect ('/');<br> }<br>
Salin selepas log masuk

Kesimpulan

Pasport bukanlah satu -satunya pemain di arena ini apabila ia mengesahkan aplikasi Node.js, tetapi modularity, fleksibiliti, sokongan komuniti, dan fakta bahawa ia hanya middleware menjadikan pasport menjadi pilihan yang hebat.

Untuk perbandingan terperinci Pasport dan Everyuth, inilah perspektif yang menarik dan bermaklumat dari pemaju Pasport sendiri.

Anda boleh mencari kod sumber penuh untuk contoh dalam repo GitHub kami.

Jika anda ingin melihat apa lagi yang boleh anda lakukan dengan Node.js, lihat julat item Node.js di Envato Market, dari borang hubungan AJAX yang responsif ke pemendekkan URL, atau bahkan penjana crud pangkalan data.

Siaran ini telah dikemas kini dengan sumbangan dari Mary Okosun. Mary adalah pemaju perisian yang berpangkalan di Lagos, Nigeria, dengan kepakaran dalam Node.js, JavaScript, MySQL, dan NoSQL Technologies.

Atas ialah kandungan terperinci Mengesahkan aplikasi Node.js dengan Pasport. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan