Nodejs node express session怎么用
Nodejs node express session怎么用
我像用node express3.0搭了一个注册登录用的网站,写了简单的界面,用mongoose来做数据库。
然后问题来了,登录之后是用Session来记录的,那么在服务器端记录的session是存在内存中,还是存在mongo数据库中?
存在mongo中是不是应该用到require(‘session-mongoose’)?
小白想问一下session到底是怎么用的,有没有好一点的例子。看了一堆博客表示他们写得大多太乱了……
有没有大神提供小工程借我参考一下~
5 回复
当然可以!下面是一个简单的例子,展示如何使用 Node.js 和 Express 3.0 搭建一个带有会话管理功能的网站。我们将使用 MongoDB 存储会话数据,并使用 express-session
和 connect-mongo
来实现这一点。
安装必要的依赖
首先,确保你已经安装了以下依赖:
npm install express mongoose connect-mongo express-session
示例代码
server.js
const express = require('express');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const mongoose = require('mongoose');
// 连接 MongoDB
mongoose.connect('mongodb://localhost:27017/mydatabase', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const app = express();
// 配置 session 中间件
app.use(session({
secret: 'your_secret_key',
resave: false,
saveUninitialized: false,
store: new MongoStore({ mongooseConnection: mongoose.connection })
}));
// 示例路由
app.get('/', (req, res) => {
if (req.session.user) {
res.send(`Hello, ${req.session.user.name}!`);
} else {
res.send('Hello, Guest!');
}
});
app.post('/login', (req, res) => {
const { username, password } = req.body;
// 这里可以添加实际的用户验证逻辑
if (username === 'test' && password === 'password') {
req.session.user = { name: username };
res.redirect('/');
} else {
res.send('Login failed.');
}
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
解释
-
连接 MongoDB:
- 使用
mongoose
连接到 MongoDB 数据库。
- 使用
-
配置 session 中间件:
- 使用
express-session
配置会话中间件,并通过MongoStore
将会话存储在 MongoDB 中。 secret
是用于签名会话 cookie 的密钥,确保安全性。store
设置为new MongoStore
,将会话数据存储在 MongoDB 中。
- 使用
-
路由处理:
/
路由检查当前会话中的用户信息,并返回相应的欢迎消息。/login
路由处理登录请求,如果用户名和密码正确,则设置会话并重定向到首页。
总结
以上代码展示了如何使用 express-session
和 connect-mongo
在 Express 应用中管理会话。你可以根据需要扩展这个示例,例如添加更多的路由、表单验证等。希望这对你的项目有帮助!
如果要持久就存数据库中
你理解得都对。资料还是看博客吧
参考我的git吧。刚好在写这个例子。https://github.com/eeandrew/CookieAndSession 为什么还用express3.0?