web注册登录功能实现代码
时间: 2024-09-26 13:01:28 浏览: 9
Web应用中的注册登录功能通常涉及到前端用户界面交互和后端服务器的数据处理。以下是一个简化的Node.js和Express框架的例子,用于展示基本的用户注册和登录流程:
```javascript
// 引入必要的模块
const express = require('express');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const bodyParser = require('body-parser');
// 初始化Express应用
const app = express();
app.use(bodyParser.json());
// 用户模型 (假设有一个简单的数据库连接)
const User = {
register(req, res) {
const { username, password } = req.body;
// 验证输入并保存到数据库
if (!username || !password) return res.status(400).json({ error: '用户名和密码必填' });
// 使用bcrypt对密码加密
const hashedPassword = bcrypt.hashSync(password, 10);
// 将用户数据保存到数据库(这里仅做示例)
saveUserToDB(username, hashedPassword)
.then(() => res.json({ message: '注册成功' }))
.catch(err => res.status(500).json({ error: '注册失败' }));
},
login(req, res) {
const { username, password } = req.body;
// 从数据库查询用户
getUserFromDB(username)
.then(user => {
if (!user) return res.status(401).json({ error: '用户名或密码错误' });
// 验证密码是否匹配
bcrypt.compare(password, user.password, function(err, result) {
if (err) throw err;
if (result === false) return res.status(401).json({ error: '用户名或密码错误' });
// 如果密码验证通过,生成JWT token
const token = jwt.sign({ userId: user.id }, process.env.JWT_SECRET);
res.json({ message: '登录成功', token });
});
})
.catch(err => res.status(500).json({ error: '未知错误' }));
}
};
// 示例数据库操作函数,实际项目中应替换为真实的数据库操作
async function saveUserToDB(username, password) {
// ...
}
async function getUserFromDB(username) {
// ...
}
// 启动服务器
app.listen(3000, () => console.log('Server started on port 3000'));
```
这个例子没有包括具体的数据库交互,因为这取决于你的数据库选择(如MongoDB、MySQL等)。你需要实现`saveUserToDB`和`getUserFromDB`函数以适应你的数据库。