前端开发

 首页 > 前端开发 > nodejs > nodejs如何操作session教程详解

nodejs如何操作session教程详解

分享到:
【字体:
导读:
         [导读] 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();
        }  
      
    }

以上就是nodejs如何操作session教程详解

分享到:
使用node-inspector在线调试Node.js
现在许多IDE比如WebStorm、IDEA、Eclipse等都内置或通过插件集成可以对Node.js进行调试,但是如果我们没有使用这些IDE如何调试Node.js呢? node-inspector是一个在webkit浏览器中在线调试Node.js的第三方node包,提供了与前端调试一致的用户体验,使用过程如下: 1.通过npm install -g node-inspector以全局模式安装node-ins...
nodejs异步上传图片生成缩略图详解
nodejs异步上传图片生成缩略图详解 需求背景 页面一个透明的 file 类型 input 按钮,点击选中图片后自动上传到后台,express 接收后,转给 node 的 upload 模块处理,对图片存储到指定目录,并做 80*80 尺寸压缩后,返回图片原图地址及缩略图地址。 方案选用 原则是多快好省,加上可以直接用 jquery 2.0.3,所以就直接挑了...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……