Nodejs中session的简单使用及通过session实现身份验证的方法

作者:Jun.lu 时间:2024-05-13 10:06:16 

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实现身份验证

nodejs express session 身份验证

1)引入模块


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

2)应用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)请求时,应用身份验证


app.use(function(req,res,next){
if (!req.session.user) {
if(req.url=="/login"){
next();//如果请求的地址是登录则通过,进行下一个请求
}
else
{
res.redirect('/login');
}
} else if (req.session.user) {
next();
}
});

4)登陆设计


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');
});
标签:node.js,session,使用,身份验证
0
投稿

猜你喜欢

  • Oracle DECODE函数语法使用介绍

    2023-07-17 12:44:22
  • 利用Python半自动化生成Nessus报告的方法

    2021-03-10 23:04:01
  • Python绘制堆叠柱状图的实例

    2022-01-04 06:14:55
  • golang与pgsql交互的实现

    2024-05-25 15:11:52
  • python批量导入数据进Elasticsearch的实例

    2022-06-29 16:08:02
  • 解决mysql8.0.19 winx64版本的安装问题

    2024-01-24 01:02:17
  • Python 中包/模块的 `import` 操作代码

    2021-07-10 02:52:20
  • 浅析php中array_map和array_walk的使用对比

    2023-09-10 22:22:28
  • 删除多余的属性 xmlns=""

    2010-08-24 18:41:00
  • Python集中化管理平台Ansible介绍与YAML简介

    2023-09-23 12:52:34
  • python 下划线的多种应用场景总结

    2021-12-19 10:51:54
  • Python实现获取系统临时目录及临时文件的方法示例

    2022-03-11 00:42:04
  • Python文本处理之按行处理大文件的方法

    2023-01-24 11:11:34
  • js实现登录注册框手机号和验证码校验(前端部分)

    2023-09-13 02:41:37
  • asp如何最大限度地实现安全登录功能?

    2010-07-11 21:11:00
  • 浅谈如何使用python抓取网页中的动态数据实现

    2021-10-19 08:47:18
  • Jupyter 无法下载文件夹如何实现曲线救国

    2023-01-12 10:28:52
  • python删除特定文件的方法

    2023-07-13 23:29:36
  • 深入理解mysql的自连接和join关联

    2024-01-21 11:40:01
  • python学习之基于Python的人脸识别技术学习

    2021-04-23 22:09:25
  • asp之家 网络编程 m.aspxhome.com