Rumah >hujung hadapan web >tutorial js >Penggunaan sesi yang mudah dalam Nodejs dan kaedah pengesahan melalui sessions_node.js

Penggunaan sesi yang mudah dalam Nodejs dan kaedah pengesahan melalui sessions_node.js

WBOY
WBOYasal
2016-05-16 15:16:151459semak imbas

Sesi tidak memerlukan pengenalan, supaya satu http boleh sepadan dengan satu pengguna akhir.

Intipati sesi dilaksanakan menggunakan kuki.

Prinsipnya mungkin: http membawa pelayan untuk menetapkan kuki lebih awal, pelayan mendapat kuki yang menunjukkan identiti pengguna, dan kemudian pergi ke lokasi tetap (pangkalan data, fail) untuk mendapatkan semula identiti pengguna yang sepadan. Berikan identiti kepada permintaan permintaan ini dan identiti pengguna akan diketahui semasa pemprosesan program. (Ia dilaksanakan secara automatik untuk anda dalam PHP, ASP atau bahasa sebelah pelayan lain)

Laksanakan kuki

Kuki yang mengenal pasti pengguna perlu ditetapkan untuk setiap pengguna. Anda boleh menggunakan peraturan berikut

Nilai MD5 alamat e-mel berdaftar, nilai kata laluan MD5 dan nilai kod rawak MD5. (Sekadar contoh, ini mungkin bukan penyelesaian yang baik)

Coretan kod pelayan:

res.setHeader("Set-Cookie", ["sid="+newUser.toCookie()+";path=/;domain="+config.domain+";expires="+new Date("2030") ]); 

kuki

sid=275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee 

Gunakan kuki untuk mendapatkan identiti pengguna dan menyediakan sesi

Arahkan semua permintaan sumber bukan statik ke sini untuk diproses. Dapatkan kuki, belah kuki dan cari pengguna yang layak dalam pangkalan data. Akhir sekali, gunakan sebelah untuk melompat ke logik permintaan seterusnya.

Logik permintaan seterusnya ialah menggunakan req.session.user secara langsung untuk mendapatkan objek pengguna.

session:function(req, res, next){
req.session = {};
if( req.cookies && req.cookies.sid ){
var a = req.cookies.sid.split("|");
var hexMail = a[0];
var hexPwd = a[1];
var hexRandom = a[2];
UserModel.hexFind(hexMail, hexPwd, hexRandom, function( status ){
//console.log("hexFind", status );
if(status.code == "0"){
//req.cookiesSelecter = cookiesSelecter;
req.session.user = status.result;
}
next();
});
}else{
next();
} 
}

Izinkan saya bercakap tentang cara nodejs melaksanakan pengesahan identiti melalui sesi

pengesahan sesi ekspres nodejs

1) Import modul

var session = require('express-session');
var cookieParser = require('cookie-parser');

2) Sapukan kuki dan sesi

app.use(cookieParser());
app.use(session({
resave: true, // don't save session if unmodified
saveUninitialized: false, // don't create session until something stored
secret: 'love'
}));

3) Apabila meminta, gunakan pengesahan

app.use(function(req,res,next){
if (!req.session.user) {
if(req.url=="/login"){
next();//如果请求的地址是登录则通过,进行下一个请求
}
else
{
res.redirect('/login');
}
} else if (req.session.user) {
next();
}
});

4) Reka bentuk log masuk

app.get('/login',function(req,res){
res.render("login");
});
app.post('/login',function(req,res){
if(req.body.username=="love" && req.body.password=="love"){
var user = {'username':'love'};
req.session.user = user;
res.redirect('/admin/app/list');
}
else
{
res.redirect('/login');
}
});
app.get('/logout',function(req,res){
req.session.user = null;
res.redirect('/login');
});
Kenyataan:
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