nodejs 的 session 简单使用

作者:Coolicer 时间:2024-05-11 09:51:19 

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
0
投稿

猜你喜欢

  • 不用Global.asa也能实现统计在线人数吗?

    2009-10-29 12:28:00
  • Javascript图像处理—图像形态学(膨胀与腐蚀)

    2024-04-23 09:27:58
  • 用javascript判断浏览器版本

    2008-04-21 13:50:00
  • Vue使用vux-ui自定义表单验证遇到的问题及解决方法

    2024-05-10 14:18:07
  • 用ASP在线创建Word与Excel文档

    2008-07-20 19:17:00
  • Golang通脉之数据类型详情

    2023-07-14 05:37:03
  • Python发送邮件封装实现过程详解

    2021-06-13 09:19:41
  • 在Python下利用OpenCV来旋转图像的教程

    2022-12-18 22:53:46
  • php广告加载类用法实例

    2023-11-14 14:56:53
  • 如何取得服务器上的用户组列表?

    2010-01-18 20:54:00
  • SOSO地图API使用(一)在地图上画圆实现思路与代码

    2024-04-10 13:54:07
  • sqlserver 导出插入脚本代码

    2024-01-26 22:39:18
  • Python实现邮件自动下载的示例详解

    2023-06-15 04:44:35
  • python定时执行指定函数的方法

    2021-04-09 03:20:14
  • MySQL使用select语句查询指定表中指定列(字段)的数据

    2024-01-26 07:51:49
  • python如何导入自己的模块

    2022-05-21 08:14:57
  • Python笔记之facade模式

    2023-10-18 22:59:50
  • python单元测试框架pytest介绍

    2021-06-11 15:28:55
  • pyecharts调整图例与各板块的位置间距实例

    2023-05-15 20:05:40
  • 浅谈python中的@以及@在tensorflow中的作用说明

    2021-06-10 01:50:22
  • asp之家 网络编程 m.aspxhome.com