Saya membangun sistem otentikasi menggunakan Passport.js menggunakan Autentikasi Node Mudah: Penyiapan dan tutorial Lokal .
Saya bingung mau ngapain passport.session()
.
Setelah bermain-main dengan middleware yang berbeda, saya memahami bahwa express.session()
itulah yang mengirimkan ID sesi melalui cookie ke klien, tetapi saya bingung tentang apa passport.session()
dan mengapa itu diperlukan sebagai tambahan express.session()
.
Berikut adalah cara saya menyiapkan aplikasi saya:
// Server.js mengonfigurasi aplikasi dan menyiapkan server web
//importing our modules
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var configDB = require('./config/database.js');
//Configuration of Databse and App
mongoose.connect(configDB.url); //connect to our database
require('./config/passport')(passport); //pass passport for configuration
app.configure(function() {
//set up our express application
app.use(express.logger('dev')); //log every request to the console
app.use(express.cookieParser()); //read cookies (needed for auth)
app.use(express.bodyParser()); //get info from html forms
app.set('view engine', 'ejs'); //set up ejs for templating
//configuration for passport
app.use(express.session({ secret: 'olhosvermelhoseasenhaclassica', maxAge:null })); //session secret
app.use(passport.initialize());
app.use(passport.session()); //persistent login session
app.use(flash()); //use connect-flash for flash messages stored in session
});
//Set up routes
require('./app/routes.js')(app, passport);
//launch
app.listen(port);
console.log("Server listening on port" + port);
sumber
Dari dokumentasi
dan
dan
sumber
app.post('/login', passport.authenticate('local'), ...
Meskipun Anda akan menggunakan
PassportJs
untuk memvalidasi pengguna sebagai bagian dari URL login Anda, Anda masih memerlukan beberapa mekanisme untuk menyimpan informasi pengguna ini dalam sesi dan mengambilnya dengan setiap permintaan berikutnya (yaitu membuat serial / deserialisasi pengguna).Jadi pada dasarnya, Anda mengautentikasi pengguna dengan setiap permintaan, meskipun otentikasi ini tidak perlu mencari database atau oauth seperti dalam respons login. Jadi paspor akan memperlakukan otentikasi sesi juga sebagai strategi otentikasi lainnya.
Dan untuk menggunakan strategi ini - yang diberi nama
session
, cukup gunakan pintasan sederhana -app.use(passport.session())
. Perhatikan juga bahwa strategi khusus ini ingin Anda mengimplementasikan fungsi serialisasi dan deserialisasi untuk alasan yang jelas.sumber
Ini hanya mengotentikasi sesi (yang diisi oleh
express.session()
). Ini setara dengan:seperti dapat dilihat pada kode di sini:
https://github.com/jaredhanson/passport/blob/42ff63c/lib/authenticator.js#L233
sumber