用nodejs写一个注册登录之后才能留言的留言版
时间: 2023-05-27 12:03:15 浏览: 75
以下是一个基本的注册登录留言板的代码框架:
```javascript
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const bcrypt = require('bcrypt');
const app = express();
const saltRounds = 10;
// 设置端口号
const port = process.env.port || 3000;
// 设置模板引擎
app.set('view engine', 'ejs');
// 使用中间件
app.use(bodyParser.urlencoded({ extended: true }));
// 使用 session 中间件
app.use(session({
secret: 'keyboard cat', // session 密钥,可以随便设置
resave: false,
saveUninitialized: true
}));
// 设置数据库连接
// ...
// 设置路由
app.get('/', (req, res) => {
res.render('index', { message: '' }); // 渲染首页
});
app.get('/register', (req, res) => {
res.render('register'); // 渲染注册页面
});
app.post('/register', (req, res) => {
const { username, password } = req.body;
// 查询数据库是否有该用户
// ...
// 如果存在该用户,返回注册页并提示错误
if (user) {
res.render('register', { message: '用户已存在' });
} else {
// 如果不存在则加密密码并写入数据库
bcrypt.hash(password, saltRounds, (err, hash) => {
// 写入数据库
// ...
// 注册成功,返回首页
res.redirect('/');
});
}
});
app.get('/login', (req, res) => {
res.render('login'); // 渲染登录页面
});
app.post('/login', (req, res) => {
const { username, password } = req.body;
// 查询数据库是否有该用户
// ...
// 如果不存在该用户,返回登录页并提示错误
if (!user) {
res.render('login', { message: '用户不存在' });
} else {
// 如果存在则比较密码是否正确
bcrypt.compare(password, user.password, (err, result) => {
if (result) {
// 如果密码正确则设置 session,跳转到留言板页面
req.session.user = user;
res.redirect('/board');
} else {
// 如果密码错误则返回登录页并提示错误
res.render('login', { message: '密码错误' });
}
});
}
});
app.get('/board', (req, res) => {
// 如果没有登录则跳转到登录页
if (!req.session.user) {
res.redirect('/login');
} else {
// 查询留言列表并渲染留言板页面
// ...
res.rend('board', { messages });
}
});
app.post('/board', (req, res) => {
const { message } = req.body;
// 写入留言到数据库
// ...
// 重新渲染留言板页面
res.redirect('/board');
});
// 开始监听端口
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
```
此代码框架仅供参考,实际实现还需考虑更多的安全和可扩展性问题。
阅读全文