nodejs 注册登录
时间: 2024-08-13 13:03:53 浏览: 63
Node.js 注册登录功能通常涉及到用户身份验证和数据库操作。以下是简单的步骤:
1. **设置项目结构**:创建一个Node.js项目,初始化一个Express应用作为服务器框架。
```javascript
const express = require('express');
const app = express();
```
2. **中间件配置**:引入如`body-parser`来解析请求体,以及`mongoose`处理MongoDB连接。
```javascript
const bodyParser = require('body-parser');
app.use(bodyParser.json());
const mongoose = require('mongoose');
```
3. **数据库模型**:定义User模型,使用Mongoose来操作用户数据。
```javascript
const UserSchema = new mongoose.Schema({
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
});
const User = mongoose.model('User', UserSchema);
```
4. **注册接口**:接收POST请求,保存新用户到数据库。
```javascript
app.post('/register', async (req, res) => {
try {
const newUser = new User(req.body);
await newUser.save();
res.status(201).json({ message: 'Registration successful' });
} catch (error) {
res.status(400).json({ error: error.message });
}
});
```
5. **登录接口**:接收POST请求,对比用户名密码并返回token或状态信息。
```javascript
app.post('/login', async (req, res) => {
try {
const user = await User.findOne({ username: req.body.username });
if (!user || !await user.comparePassword(req.body.password)) {
return res.status(401).json({ error: 'Invalid credentials' });
}
// 返回token或更新session等
res.status(200).json({ token: generateToken(user), user });
} catch (error) {
res.status(500).json({ error: 'Server error' });
}
});
// 比较密码的辅助函数(仅示例,实际应用可能使用加密哈希)
async function comparePassword(password, hashedPassword) {
return hashedPassword === hash(password);
}
```
6. **安全注意事项**:务必对用户的输入进行验证和清理,避免SQL注入或XSS攻击。密码应该存储为哈希值,而不是明文。
阅读全文