Node.js 实现用户登陆 session

简介: Node.js 实现用户登陆 session

Node.js实现session

关于session

由于HTTP是一种无状态协议,所以无法在请求中保存用户登陆状态。

session是是通过服务端保存的一个表结构来对应用户登陆状态,其在客户端的呈现就是cookie。

其原理大概是这样:用户登陆以后服务端会自动生成一个较长的不重复随机数,及session,用该session作为key,用户信息及其他信息作为value,保存在内存或者数据库中,方便查询。服务端用setCookie的方式将session通过http返回给客户端并将session保存在浏览器的cookie中。下次客户端发起其他非登陆请求时会携带此cookie,到了服务端以后通过查阅之前的session表得知用户登陆状态并在成功的情况下得到用户信息。

session的实现

这里我们用到两个模块,分别是express-session以及cookie-parser。

用中间件到方式将cookie-parser加入到express中去,用以解析cookie,即得到session。

let cookieParser = require('cookie-parser');
app.use(cookieParser());

再加入express-session中间件。

let session = require('express-session');
app.use(session({
        resave: false,
        rolling: false,
        saveUninitialized: true,
        secret: RandomSecret(),
        name: 'H5Session',
        cookie: { maxAge: 60 * 1000}
    }));

接着自己写一个中间件用以过滤请求。

这里给出我自己项目的代码,

成功登陆以后,给req.session.user赋值。

在登陆以及注册请求是不需要校验的,直接next,有session的也next,走向下一个中间件,这段代码需要放在route代码之前。非登陆及注册请求的没有session的请求直接返回用户权限异常提示。

req.session.user = {'userName': params.userName};
app.use(function(req,res,next){
  if (!req.session.user) {
    if (req.url === '/H5/Login' || req.url === '/H5/Register') {
      next();/*请求为登陆或者注册则不需要校验session*/
    }
    else{
      res.json({result: false, content: '用户权限异常'});
    }
  }
  else if (req.session.user) {
    next();
  };
})
目录
相关文章
|
3月前
|
JavaScript 数据安全/隐私保护
|
3月前
|
存储 JavaScript 前端开发
js中session、cookie、 localStorage和SessionStorage的区别和特点
js中session、cookie、 localStorage和SessionStorage的区别和特点
|
4天前
|
存储 JavaScript 前端开发
js登陆验证
js登陆验证
10 0
|
19天前
|
存储 中间件 API
Nest.js 实战 (六):使用 Session 在不同请求间存储信息
这篇文章介绍了在Nest.js中如何使用Session来记录客户状态。文章首先解释了Session的概念,然后详细说明了如何在Nest.js中安装和使用express-session,包括全局配置、参数说明、使用方式和常用方法。
|
9月前
|
存储 JavaScript 前端开发
js中session、cookie、 localStorage和SessionStorage的区别和特点
js中session、cookie、 localStorage和SessionStorage的区别和特点
57 0
|
存储 数据采集 前端开发
Node.js----前后端的身份认证(session与jwt)(一)
Node.js----前后端的身份认证(session与jwt)
|
前端开发 JavaScript
HTML+CSS+JS 实现一个漂亮的登陆页面
HTML+CSS+JS 实现一个漂亮的登陆页面
457 1
HTML+CSS+JS 实现一个漂亮的登陆页面
|
存储 JSON 前端开发
Node.js----前后端的身份认证(session与jwt)(二)
Node.js----前后端的身份认证(session与jwt)(二)
|
NoSQL JavaScript 前端开发
【Node.js实战】一文带你开发博客项目之Koa2重构(实现session、开发路由、联调、日志)
【Node.js实战】一文带你开发博客项目之Koa2重构(实现session、开发路由、联调、日志)
221 0
|
存储 NoSQL JavaScript
【Node.js实战】一文带你开发博客项目之Express重构(初始化环境,处理 session,连接 redis)
【Node.js实战】一文带你开发博客项目之Express重构(初始化环境,处理 session,连接 redis)
171 0