init
This commit is contained in:
commit
5146808c2f
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.*
|
||||||
|
!.gitignore
|
||||||
|
node_modules/
|
||||||
|
package-lock.json
|
41
index.js
Normal file
41
index.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
const express = require('express');
|
||||||
|
const app = express();
|
||||||
|
const port = 8081;
|
||||||
|
|
||||||
|
app.use(express.json());
|
||||||
|
app.use(express.urlencoded({ extended: false }));
|
||||||
|
app.use(express.static('static'));
|
||||||
|
|
||||||
|
app.post('/login', (req, res) => {
|
||||||
|
const { username, password } = req.body;
|
||||||
|
|
||||||
|
// 模拟登录验证
|
||||||
|
if (username === '123' && password === '123') {
|
||||||
|
// res.redirect(302, '/success.html');
|
||||||
|
res.json({ success: true, redirectUrl: '/success.html' });
|
||||||
|
} else {
|
||||||
|
res.status(401).json({ success: false, message: 'Invalid credentials' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// catch 404 and forward to error handler
|
||||||
|
app.use(function(req, res, next) {
|
||||||
|
res.status(404);
|
||||||
|
res.end('<h1>404 Not Found</h1>');
|
||||||
|
});
|
||||||
|
|
||||||
|
// error handler
|
||||||
|
app.use(function(err, req, res, next) {
|
||||||
|
// set locals, only providing error in development
|
||||||
|
res.locals.message = err.message;
|
||||||
|
res.locals.error = req.app.get('env') === 'development' ? err : {};
|
||||||
|
|
||||||
|
console.log(err);
|
||||||
|
// render the error page
|
||||||
|
res.status(err.status || 500);
|
||||||
|
res.end('<h1>error</h1>');
|
||||||
|
});
|
||||||
|
|
||||||
|
app.listen(port, () => {
|
||||||
|
console.log(`Server running at http://127.0.0.1:${port}`);
|
||||||
|
});
|
16
package.json
Normal file
16
package.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "html",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"start": "nodemon index.js",
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"description": "",
|
||||||
|
"dependencies": {
|
||||||
|
"express": "^4.21.1",
|
||||||
|
"nodemon": "^3.1.7"
|
||||||
|
}
|
||||||
|
}
|
57
static/index.html
Normal file
57
static/index.html
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Login Form</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="loginForm">
|
||||||
|
Username: <input type="text" name="username"><br>
|
||||||
|
Password: <input type="text" name="password"><br>
|
||||||
|
<input type="submit" value="Submit">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.getElementById('loginForm').addEventListener('submit', function(event) {
|
||||||
|
event.preventDefault(); // 阻止表单默认提交行为
|
||||||
|
|
||||||
|
const username = document.querySelector('input[name="username"]').value;
|
||||||
|
const password = document.querySelector('input[name="password"]').value;
|
||||||
|
|
||||||
|
const bodyData = new URLSearchParams({
|
||||||
|
username: username,
|
||||||
|
password: password
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(bodyData.toString());
|
||||||
|
|
||||||
|
fetch('/login', {
|
||||||
|
method: 'POST',
|
||||||
|
body: bodyData.toString(), // 发送表单数据
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded' // 设置请求头
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(response => {
|
||||||
|
if (response.ok) {
|
||||||
|
return response.json();
|
||||||
|
} else {
|
||||||
|
throw new Error('Login failed');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(data => {
|
||||||
|
if (data.success) {
|
||||||
|
window.location.href = data.redirectUrl; // 跳转到指定URL
|
||||||
|
} else {
|
||||||
|
alert('Login failed');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('Error:', error);
|
||||||
|
alert('An error occurred during login');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
11
static/success.html
Normal file
11
static/success.html
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Successful</h1>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
x
Reference in New Issue
Block a user