最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nodejs中session的簡(jiǎn)單使用及通過session實(shí)現(xiàn)身份驗(yàn)證的方法

 更新時(shí)間:2016年02月04日 09:14:38   作者:Jun.lu  
session的本質(zhì)使用cookie來實(shí)現(xiàn)。本文給大家介紹Nodejs中session的簡(jiǎn)單使用及通過session實(shí)現(xiàn)身份驗(yàn)證的方法,對(duì)node.js session相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧

session 不用多介紹,使一個(gè)http可以對(duì)應(yīng)一個(gè)終端用戶。

session的本質(zhì)使用cookie來實(shí)現(xiàn)。

原理大概是:http 帶來服務(wù)端提前設(shè)置 cookie,服務(wù)端拿到標(biāo)示用戶身份的cookie, 再去固定地點(diǎn)(數(shù)據(jù)庫,文件)檢索出對(duì)應(yīng)的用戶身份。把身份賦值給本次請(qǐng)求的request,在程序處理中就知曉了用戶的身份了。(在PHP,ASP或者其他服務(wù)端語言中都自動(dòng)幫你實(shí)現(xiàn)了)

實(shí)現(xiàn)cookie

需要為每一個(gè)用戶設(shè)置一個(gè)可以標(biāo)示用戶身份的cookie??梢允褂萌缦乱?guī)則

注冊(cè)郵箱MD5值+密碼MD5值+隨機(jī)碼MD5值。(僅僅舉例,這可能并不是一個(gè)好的方案)

服務(wù)端代碼片段:

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

cookie

sid=275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee 

使用 cookie 獲取用戶身份,設(shè)置session

把所有非靜態(tài)資源的請(qǐng)求都定向到這里處理。獲取cookie,把cookie拆分并在數(shù)據(jù)庫查找符合條件的用戶。最后使用 next 跳轉(zhuǎn)到下一個(gè)請(qǐng)求邏輯。

下一個(gè)請(qǐng)求邏輯就可是直接使用 req.session.user 來獲取 user 對(duì)象了。

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();
} 
}

下面給大家說說nodejs通過session實(shí)現(xiàn)身份驗(yàn)證

nodejs express session 身份驗(yàn)證

1)引入模塊

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

2)應(yīng)用cookie及session

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)請(qǐng)求時(shí),應(yīng)用身份驗(yàn)證

app.use(function(req,res,next){
if (!req.session.user) {
if(req.url=="/login"){
next();//如果請(qǐng)求的地址是登錄則通過,進(jìn)行下一個(gè)請(qǐng)求
}
else
{
res.redirect('/login');
}
} else if (req.session.user) {
next();
}
});

4)登陸設(shè)計(jì)

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');
});

相關(guān)文章

  • 淺談node的事件機(jī)制

    淺談node的事件機(jī)制

    本篇文章主要介紹了node的事件機(jī)制,本文通過實(shí)現(xiàn)一個(gè)簡(jiǎn)易的、具有發(fā)布/訂閱模式的事件機(jī)制,以此來理清EventEmitter類的實(shí)現(xiàn)思路,有興趣的可以了解一下
    2017-10-10
  • nodejs開發(fā)微博實(shí)例

    nodejs開發(fā)微博實(shí)例

    本文給大家分享的是使用node.js實(shí)現(xiàn)開發(fā)微博的實(shí)例,主要是看了nodejs開發(fā)指南之后發(fā)現(xiàn)書上的代碼很多已經(jīng)不能用了,原因是express版本升級(jí)了,所以今天就嘗試著吧開發(fā)微博的實(shí)例也升下級(jí),推薦給大家。
    2015-03-03
  • 詳解nodejs http請(qǐng)求相關(guān)總結(jié)

    詳解nodejs http請(qǐng)求相關(guān)總結(jié)

    這篇文章主要介紹了nodejs http請(qǐng)求相關(guān)總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • 一文詳解npm如何更新項(xiàng)目最新依賴包

    一文詳解npm如何更新項(xiàng)目最新依賴包

    npm包的更新速度很快,為了將項(xiàng)目或者全局依賴更新到最新版本,下面這篇文章主要給大家介紹了關(guān)于npm如何更新項(xiàng)目最新依賴包的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 詳解如何在Node.js中使用中間件處理請(qǐng)求

    詳解如何在Node.js中使用中間件處理請(qǐng)求

    在Node.js中,處理中間件是處理HTTP請(qǐng)求和響應(yīng)的一個(gè)常見方式,甚至扮演著至關(guān)重要的角色,本文將介紹如何在Node.js中使用中間件來處理請(qǐng)求,感興趣的可以了解下
    2025-02-02
  • node.js將MongoDB數(shù)據(jù)同步到MySQL的步驟

    node.js將MongoDB數(shù)據(jù)同步到MySQL的步驟

    這篇文章主要給大家介紹了關(guān)于node.js將MongoDB數(shù)據(jù)同步到MySQL的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Nodejs sublime text 3安裝與配置

    Nodejs sublime text 3安裝與配置

    Sublime Text是一個(gè)輕量、簡(jiǎn)潔、高效、跨平臺(tái)的編輯器,方便的配色以及兼容vim快捷鍵等各種優(yōu)點(diǎn)博得了很多前端開發(fā)人員的喜愛!Sublime Text這款程序員必備代碼編輯器,幾乎每位程序員提到Sublime Text都是贊不絕口!它體積小巧,無需安裝,綠色便攜
    2014-06-06
  • node.js中的fs.close方法使用說明

    node.js中的fs.close方法使用說明

    這篇文章主要介紹了node.js中的fs.close方法使用說明,本文介紹了fs.close方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Node.js環(huán)境下編寫爬蟲爬取維基百科內(nèi)容的實(shí)例分享

    Node.js環(huán)境下編寫爬蟲爬取維基百科內(nèi)容的實(shí)例分享

    WikiPedia平時(shí)在國內(nèi)不大好訪問-- 所以用爬蟲一次性把要看的東西都爬下來保存慢慢看還是比較好的XD 這里我們就來看一下Node.js環(huán)境下編寫爬蟲爬取維基百科內(nèi)容的實(shí)例分享
    2016-06-06
  • node.js中的http.response.getHeader方法使用說明

    node.js中的http.response.getHeader方法使用說明

    這篇文章主要介紹了node.js中的http.response.getHeader方法使用說明,本文介紹了http.response.getHeader的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12

最新評(píng)論

苍梧县| 台安县| 鲁山县| 兴仁县| 乳源| 滕州市| 手游| 南通市| 炎陵县| 贵州省| 天长市| 屯昌县| 恭城| 阜阳市| 蒙城县| 文登市| 元谋县| 洪湖市| 洪江市| 吴川市| 临湘市| 富源县| 通榆县| 定兴县| 新安县| 沁阳市| 三明市| 衡南县| 上虞市| 北京市| 军事| 桐庐县| 阜新市| 图木舒克市| 鹤庆县| 陆良县| 三亚市| 汕尾市| 西丰县| 三穗县| 临清市|