当前位置:首页 > JavaScript

js实现session

2026-04-06 17:37:10JavaScript

使用 sessionStorage 实现会话存储

sessionStorage 是 HTML5 提供的 Web Storage API 之一,用于在当前浏览器会话期间存储数据,关闭标签页或浏览器后数据会被清除。

存储数据

sessionStorage.setItem('key', 'value');

读取数据

const value = sessionStorage.getItem('key');
console.log(value); // 输出 'value'

删除数据

sessionStorage.removeItem('key');

清空所有数据

sessionStorage.clear();

使用 localStorage 实现持久化存储(可选)

如果需要在浏览器关闭后仍然保留数据,可以使用 localStorage,其 API 与 sessionStorage 相同,但数据不会随会话结束而清除。

localStorage.setItem('key', 'value');
const value = localStorage.getItem('key');
localStorage.removeItem('key');
localStorage.clear();

使用 express-session(Node.js 后端)

在 Node.js 环境中,可以使用 express-session 中间件管理会话数据。

js实现session

安装依赖

npm install express express-session

配置会话

const express = require('express');
const session = require('express-session');

const app = express();

app.use(session({
  secret: 'your-secret-key', // 用于签名会话 ID 的密钥
  resave: false,             // 强制重新保存会话(即使未修改)
  saveUninitialized: true,   // 强制保存未初始化的会话
  cookie: { secure: false }  // 设置 Cookie 选项(HTTPS 下应设为 true)
}));

存储会话数据

app.get('/set-session', (req, res) => {
  req.session.username = 'JohnDoe';
  res.send('Session data set');
});

读取会话数据

js实现session

app.get('/get-session', (req, res) => {
  const username = req.session.username;
  res.send(`Session data: ${username}`);
});

销毁会话

app.get('/destroy-session', (req, res) => {
  req.session.destroy((err) => {
    if (err) throw err;
    res.send('Session destroyed');
  });
});

使用 cookie 存储会话数据(前端)

如果需要在不同标签页或浏览器关闭后仍然保留会话数据,可以结合 Cookie 使用。

设置 Cookie

document.cookie = 'username=JohnDoe; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/';

读取 Cookie

const cookies = document.cookie.split(';');
const usernameCookie = cookies.find(c => c.trim().startsWith('username='));
const username = usernameCookie ? usernameCookie.split('=')[1] : null;
console.log(username); // 输出 'JohnDoe'

删除 Cookie

document.cookie = 'username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';

注意事项

  • sessionStorage 仅在同一标签页有效,新开标签页或窗口不会共享数据。
  • localStorage 和 Cookie 可以跨标签页共享,但需注意安全性问题(如 XSS 攻击)。
  • 后端会话(如 express-session)通常依赖 Cookie 存储会话 ID,确保设置 securehttpOnly 选项以提高安全性。

标签: jssession
分享给朋友:

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…