• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

nodejs操作session教程

武飞扬头像
CRMEB众邦科技
帮助1

导读:

nodejs如何操作session教程详解 session 不用多介绍,使一个http可以对应一个终端用户。 session的本质使用cookie来实现。 原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身...

nodejs如何操作session教程详解

session 不用多介绍,使一个http可以对应一个终端用户。

session的本质使用cookie来实现。

原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份。把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了。(在PHP,ASP或者其他服务端语言中都自动帮你实现了)

实现cookie

需要为每一个用户设置一个可以标示用户身份的cookie。可以使用如下规则

注册邮箱MD5值 密码MD5值 随机码MD5值。(仅仅举例,这可能并不是一个好的方案)

服务端代码片段:

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

使用 cookie 获取用户身份,设置session

把所有非静态资源的请求都定向到这里处理。获取cookie,把cookie拆分并在数据库查找符合条件的用户。最后使用 next 跳转到下一个请求逻辑。

下一个请求逻辑就可是直接使用 req.session.user 来获取 user 对象了。

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

学习更多node.js知识可以关注CRMEB。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibccef
系列文章
更多 icon
同类精品
更多 icon
继续加载