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


猜你喜欢
- Pyinstaller库简介:简单来说,就是直接将python语言编写的py程序打包为exe可执行文件,对方不需要安装python环境即可直
- 问题描述python的pandas库中有一个十分便利的isnull()函数,它可以用来判断缺失值,我们通过几个例子学习它的使用方法。首先我们
- 先去下载一个叫SWFToImage.dll的东西 再建立一个bat文件,并运行: COPY SWFToImage.dll %windir%\
- 欢迎来到 vue-form 表单提交演示间, 你有更好的建议,请告知楼主额!1. 客户端 html<!DOCTYPE html>
- 本文实例讲述了Python爬虫框架Scrapy基本用法。分享给大家供大家参考,具体如下:Xpath<html><head&
- F.conv2d pytorch卷积计算Pytorch里一般小写的都是函数式的接口,相应的大写的是类式接口。函数式的更加low-level一
- 一般常规的我们保存数据为dict类型时,系统会自动帮我们排序;但有时我们想按照输入顺序的key:value保存到dict中,而不想要改变顺序
- 而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建和更新这些信息后保存到数据库中,这也就是所
- 开始码代码之前,我们先来了解一下三种邮件服务协议:1、SMTP协议SMTP(Simple Mail Transfer Protocol),即
- 本文介绍sqlite数据库,如何使用sqlite3包操作轻量级关系型数据库。sqlite概述sqlite是嵌入式关系型数据库引擎,官方描述为
- 本文介绍了Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录,分享给大家,具体如下:Python 2.7I
- 本文实例讲述了C#操作SQLite数据库方法。分享给大家供大家参考,具体如下:SQLite介绍SQLite is a software li
- 这是我对以前配置的基于vue-cli3搭建的前端H5模板的升级,主要把vue-cli3项目升级为vue-cli4,并删除一些过时插件。插件版
- 例子是输出九九乘法表如果按照如下程序写:# 输出九九乘法表 for i in range(10): for j in range
- 先给大家介绍下python中random模块random与numpy.random对比:1、random.random():生成[0,1)之
- 一、初始递归递归函数:在一个函数里在调用这个函数本身。递归的最大深度:998正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去。
- 本文实例讲述了Python素数检测的方法。分享给大家供大家参考。具体如下:因子检测:检测因子,时间复杂度O(n^(1/2))def is_p
- 一、merge(合并)的语法:pd.merge(left, right, how='inner', on=None, lef
- python strip() 函数和 split() 函数的详解及实例一直以来都分不清楚strip和split的功能,实际上st
- eval() 函数用来执行一个字符串表达式,并返回表达式的值。eval函数功能:将字符串str当成有效的表达式来求值并返回计算结果。eval