express中session的存储与销毁
时间: 2024-02-25 12:52:48 浏览: 30
在 Express 中,session 的存储与销毁可以通过使用中间件来实现。
1. 存储 session
Express 中存储 session 可以使用 `express-session` 中间件,它可以将 session 存储在内存、文件、数据库等地方。以下是一个示例:
```javascript
const express = require('express');
const session = require('express-session');
const app = express();
app.use(session({
secret: 'mySecretKey',
resave: false,
saveUninitialized: true
}));
app.get('/', (req, res) => {
req.session.username = 'John';
res.send('Session stored');
});
app.listen(3000, () => {
console.log('Server started');
});
```
在这个示例中,我们使用了 `express-session` 中间件来存储 session,`secret` 是用来加密 session 的秘钥,`resave` 表示是否每次请求都重新保存 session,`saveUninitialized` 表示是否保存未初始化的 session。
当用户访问 `/` 路径时,我们将用户名存储在 session 中,然后发送响应。
2. 销毁 session
Express 中销毁 session 可以使用 `req.session.destroy()` 方法,它可以删除 session 中存储的所有数据。以下是一个示例:
```javascript
app.get('/logout', (req, res) => {
req.session.destroy(err => {
if (err) {
console.log(err);
} else {
res.redirect('/');
}
});
});
```
在这个示例中,当用户访问 `/logout` 路径时,我们使用 `req.session.destroy()` 方法来销毁 session,并重定向到首页。如果销毁 session 发生错误,我们将错误记录到控制台中。