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();
  };
})
目录
相关文章
|
8月前
|
JavaScript 数据安全/隐私保护
|
8月前
|
存储 JavaScript 前端开发
js中session、cookie、 localStorage和SessionStorage的区别和特点
js中session、cookie、 localStorage和SessionStorage的区别和特点
|
5月前
|
JavaScript
js实现登陆注册
js实现登陆注册
43 1
|
3月前
|
JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(二)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
67 0
|
3月前
|
存储 JSON JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
129 0
|
4月前
|
前端开发 JavaScript 安全
node登陆接口权限配置cookie-parser、express-session
本文介绍了在Node.js中使用express-session和cookie-parser实现登录接口的权限配置,包括验证码接口的生成和自定义中间件的创建,用于验证用户权限。
38 0
node登陆接口权限配置cookie-parser、express-session
|
4月前
|
存储 缓存 NoSQL
node中session持久化问题解决
本文介绍了如何解决Node.js中session无法持久化的问题,通过使用Redis数据库来实现session的持久化存储。
36 0
|
5月前
|
存储 JavaScript 前端开发
js登陆验证
js登陆验证
41 0
|
5月前
|
存储 中间件 API
Nest.js 实战 (六):使用 Session 在不同请求间存储信息
这篇文章介绍了在Nest.js中如何使用Session来记录客户状态。文章首先解释了Session的概念,然后详细说明了如何在Nest.js中安装和使用express-session,包括全局配置、参数说明、使用方式和常用方法。
100 0
|
存储 JavaScript 前端开发
js中session、cookie、 localStorage和SessionStorage的区别和特点
js中session、cookie、 localStorage和SessionStorage的区别和特点
84 0