实现一个基本的登录注册功能,通常需要以下几个步骤:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login and Register</title>
</head>
<body>
<h2>Login</h2>
<form id="loginForm">
<input type="text" id="loginUsername" placeholder="Username" required>
<input type="password" id="loginPassword" placeholder="Password" required>
<button type="submit">Login</button>
</form>
<h2>Register</h2>
<form id="registerForm">
<input type="text" id="registerUsername" placeholder="Username" required>
<input type="password" id="registerPassword" placeholder="Password" required>
<button type="submit">Register</button>
</form>
<script>
document.getElementById('loginForm').addEventListener('submit', function(event) {
event.preventDefault();
const username = document.getElementById('loginUsername').value;
const password = document.getElementById('loginPassword').value;
fetch('/api/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ username, password })
}).then(response => response.json())
.then(data => {
if (data.success) {
alert('Login successful!');
} else {
alert('Login failed: ' + data.message);
}
});
});
document.getElementById('registerForm').addEventListener('submit', function(event) {
event.preventDefault();
const username = document.getElementById('registerUsername').value;
const password = document.getElementById('registerPassword').value;
fetch('/api/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ username, password })
}).then(response => response.json())
.then(data => {
if (data.success) {
alert('Registration successful!');
} else {
alert('Registration failed: ' + data.message);
}
});
});
</script>
</body>
</html>const express = require('express');
const bodyParser = require('body-parser');
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const app = express();
app.use(bodyParser.json());
let users = []; // In-memory storage for simplicity
app.post('/api/register', async (req, res) => {
const { username, password } = req.body;
const hashedPassword = await bcrypt.hash(password, 10);
users.push({ username, password: hashedPassword });
res.json({ success: true });
});
app.post('/api/login', async (req, res) => {
const { username, password } = req.body;
const user = users.find(u => u.username === username);
if (user && await bcrypt.compare(password, user.password)) {
const token = jwt.sign({ username }, 'secret_key', { expiresIn: '1h' });
res.json({ success: true, token });
} else {
res.status(401).json({ success: false, message: 'Invalid credentials' });
}
});
app.listen(3000, () => console.log('Server running on port 3000'));通过以上步骤和代码示例,可以实现一个基本的登录注册功能。根据实际需求,还可以进一步优化和扩展功能。