Nodejs中session的简单使用及通过session实现身份验证的方法
2016-02-04 00:00
996 查看
session 不用多介绍,使一个http可以对应一个终端用户。
session的本质使用cookie来实现。
原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份。把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了。(在PHP,ASP或者其他服务端语言中都自动帮你实现了)
实现cookie
需要为每一个用户设置一个可以标示用户身份的cookie。可以使用如下规则
注册邮箱MD5值+密码MD5值+随机码MD5值。(仅仅举例,这可能并不是一个好的方案)
服务端代码片段:
cookie
使用 cookie 获取用户身份,设置session
把所有非静态资源的请求都定向到这里处理。获取cookie,把cookie拆分并在数据库查找符合条件的用户。最后使用 next 跳转到下一个请求逻辑。
下一个请求逻辑就可是直接使用 req.session.user 来获取 user 对象了。
下面给大家说说nodejs通过session实现身份验证
nodejs express session 身份验证
1)引入模块
2)应用cookie及session
3)请求时,应用身份验证
4)登陆设计
php使用session二维数组实例
使用jquery操作session方法分享
php中使用session防止用户非法登录后台的方法
Node.js编程中客户端Session的使用详解
在Mac OS下使用Node.js的简单教程
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'); });
您可能感兴趣的文章:
PHP中使用Session配合Javascript实现文件上传进度条功能php使用session二维数组实例
使用jquery操作session方法分享
php中使用session防止用户非法登录后台的方法
Node.js编程中客户端Session的使用详解
在Mac OS下使用Node.js的简单教程
相关文章推荐
- 你一定会收藏的Nodejs代码片段
- Node.js刷新session过期时间
- 116. Populating Next Right Pointers in Each Node && 117. II
- hdu4587 TWO NODES(无向图割点)
- ENode框架单台机器在处理Command时的设计思路
- ztree中依据后台中传过来的node的id,将这个node的复选框置为不可用
- nodejs使用multiparty模块实现文件上传(另附express.bodyParser()的说明)
- NodeJS折腾记--------------------------------------- Mac OSX 1. 删除/usr/local/lib中的所有node和node_modules 2
- nodejs SSL Error: CERT_UNTRUSTED while using npm command 错误
- (17)ClippingNode的使用
- Nodejs 多文件夹文件同步
- nodejs小问题:Ubuntu15下安装Node.js4.1.1
- node.js 学习
- node.js 资料
- Karma的第一次使用
- LeetCode24. Swap Nodes in Pairs简单到一次性通过
- Node.js微服务+流水线服务框架的设想
- Hadoop运维笔记 之 Namenode异常停止后无法正常启动
- 10023---使用Node.js+Socket.IO搭建WebSocket实时应用
- Node.js v5.3.0个人翻译(二) --断言