【后端开发实习】Node.js搭建Web应用,用Redis维持session状态

Redis

Redis是什么

Redis是一个开源的、内存中的数据结构存储系统,可以用作数据库、缓存和消息代理。它支持多种数据类型,包括字符串、哈希、列表、集合和有序集合。由于它是内存级别的数据库,因此读写的速度很快。这里用来存放session最为合适。

Redis安装

安装教程

Redis的使用

  • Linux平台(Ubuntu20.04)
    启动方法:
sudo systemctl status redis-server

  • Windows平台
redis-server

时实交互:

redis-cli

另外vscode还开发了一款插件用来可视化展示redis,直接在插件市场里面搜索Redis就可以得到:
在这里插入图片描述

应用搭建

使用redis维持session状态

//创建Redis数据库连接
const RedisStore = connectRedis(session)

//
const redisClient = redis.createClient({
    host: 'localhost',
    port: 6379
})
//定义Session中间件
app.use(session({
    store: new RedisStore({ client: redisClient }),
    secret: 'secret$%^134',
    resave: false,
    saveUninitialized: false,
    cookie: {
        secure: false, // if true only transmit cookie over https
        httpOnly: false, // if true prevent client side JS from reading the cookie 
        maxAge: 1000 * 60 * 10 // session max age in miliseconds
    }
}))

将/路径下GET请求querystring中带有的参数及其缓存在session中

app.get("/", (req, res) => {
    const sess = req.session;
	//将请求保存在session中
	if (req.query) {
		for (let key in req.query) {
			sess[key] = req.query[key];
		}
	}
    if (sess.username && sess.password) {
        if (sess.username) {
            res.write(`<h1>Welcome ${sess.username} </h1><br>`)
            res.write(
                `<h3>This is the Home page</h3>`
            );
            res.end('<a href=' + '/logout' + '>Click here to log out</a >')
        }
    } else {
        res.sendFile(__dirname + "/login.html")
    }
});

访问/路径时,以json形式将session中缓存的参数内容打印到前台页面

app.get("/", (req, res) => {
    const sess = req.session;
	//将请求保存在session中
	if (req.query) {
		for (let key in req.query) {
			sess[key] = req.query[key];
		}
	}
	//将session数据以JSON格式输出
	const sessionJSON = JSON.stringify(sess);
    if (sess.username && sess.password) {
        if (sess.username) {
            res.write(`<h1>Welcome ${sess.username} </h1><br>`)
            res.write(
                `<h3>This is the Home page</h3>`
            );
			res.write( `<p>Session Data: ${sessionJSON}</p>`)
            res.end('<a href=' + '/logout' + '>Click here to log out</a >')
        }
    } else {
        res.sendFile(__dirname + "/login.html")
    }
});

注:上述开发实现了前后端分离,交互使用的是Ajax。

相关推荐

  1. Python Web 开发:如何 Flask 轻量级 Web 应用

    2024-07-10 06:54:05       50 阅读
  2. egg管理服务

    2024-07-10 06:54:05       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 06:54:05       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 06:54:05       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 06:54:05       90 阅读
  4. Python语言-面向对象

    2024-07-10 06:54:05       98 阅读

热门阅读

  1. mysql实战入门-基础篇

    2024-07-10 06:54:05       26 阅读
  2. Linux安装Docker以及Docker Componse

    2024-07-10 06:54:05       34 阅读
  3. 通信技术在反无人机中的作用分析

    2024-07-10 06:54:05       33 阅读
  4. FastGPT源码部署,不使用docker

    2024-07-10 06:54:05       31 阅读
  5. 【ROS2】中级-编写动作服务器和客户端(Python)

    2024-07-10 06:54:05       24 阅读
  6. 等保测评视角下的哈尔滨智慧城市安全框架构建

    2024-07-10 06:54:05       33 阅读
  7. 如何判断服务器是否被攻击

    2024-07-10 06:54:05       25 阅读
  8. Go中gin框架的*gin.Context参数常见实用方法

    2024-07-10 06:54:05       28 阅读
  9. qt writeDatagram 函数详解

    2024-07-10 06:54:05       49 阅读
  10. CSS - 深入理解选择器的使用方式

    2024-07-10 06:54:05       39 阅读
  11. 基于gunicorn+flask+docker模型高并发部署

    2024-07-10 06:54:05       25 阅读